java 入门如何设计类
2019/12/24 | 在校大二上学期 | 太原科技大学
初学java后,我们会发现java难点不在于Java语法难学,而是把我们挂在了如何设计类的“吊绳”上了。这恰恰也是小白与入职多年的程序员的的差距之一。所以今天来分享一下我的观点:
那么如何设计类呢?有没有遵循的原则可言呢?答案呢,就是下面的叙述!
面试官:“请你用C++/java/Python等语言以面向对象的方式,设计一个在console上运行的计算器。”
面试者埋头10分钟,写出了实现计算器功能的程序。 这里呢,程序就不往上弄了。但是小鸟写的程序大概是这样子的:一个class、一个main方法和一连串的代码,从头到尾就有一个类和一个主方法。但是这不利于后期运维,并且可拓展性很差。
所以,分"类"设计实现功能分装变得尤为重要。设计思路如下:
计算器最基本的功能为 :+ - * / 。可以将加减乘除分别写一个类,都去继承Operation类(父类)。那么如何给用户一个给好的操作方法呢?那么就得在设计一个类(OperationCompany类)。而这个类比较特殊,主要负责用户输入什么运算,就new 什么对象。 什么意思呢? 比如说,用户想实现乘法这个运算,那么在用户输入乘号*后,这个类的方法就会以乘法类为模板,new一个乘法类对象出来,从而去调用乘法的类方法。这种模式叫做简单工厂原则。
其中,加减乘除分开设计就体现了封装这一特性,而Operation(父类)的子类(加减乘除)就体现了子类的多态性。俗称“一龙生九子,九子各不同”,正是这个道理;而子类继承父类Operation类是继承所在。所以在编程中边品边思考,才会信手拈来高质量的代码行。
转载注明出处: https://www.cnblogs.com/TreasureBoy-blog/
java 入门如何设计类的更多相关文章
- Java入门基础(类)
类 在Java中表示自定义的数据类型,一个class可以是若干基本类型的组合. public class Student { public String id;//学号 public String n ...
- java入门---对象和类&概念详解&实例
Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 这篇文章,我们主要来看下: 对象:对象是类的一个实例(对象不是找个女朋友),有状态 ...
- Java入门之File类和IO流
1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作 . 构造方法: public File(String pathname) :通过将 ...
- Java入门基础(类的方法)
方法 1.添加方法 方法表示一个类能做什么.在Java里,方法和属性属于对等的术语,在一个类中,不仅可以添加属性,还可以添加方法. 类 { 属性:描述“我有什么” 方法:描述“我能做什么” } 例子: ...
- Java入门篇(六)——类和对象
写到这里终于写到了入门篇的最后一个知识点了.类和对象是Java中经常被提到的两个词汇,实际上可以将类看作对象的载体,它定义了对象所具有的功能.Java是面向对象的语言,因此掌握类与对象是学习Java语 ...
- 设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”。。。
设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”,则抛出一个异常信息“This is a XYZ”,如果从命令行输入 ABC,则没有抛出异常.(只有 ...
- Java入门(一)——类、抽象类和接口
Java是一门面向对象语言,可以看出"对象"在Java有着举足轻重的位置.那么,"对象"从何而来呢?那必须是丈母娘造出来的,下面我们就先来说说这个丈母娘--类. ...
- Java集合为什么设计为:实现类继承了抽象类,同时实现抽象类实现的接口
更好阅读体验:Java集合为什么设计为:实现类继承了抽象类,同时实现抽象类实现的接口 问题 Java集合源码为什么设计为:「实现类继承了抽象类,同时实现抽象类实现的接口?」 看着List 集合的UML ...
- java入门学习笔记之1(类的定义,代码的编译执行)
这篇文章讲解Java代码的基本执行过程 我们先抛开各种JAVA IDE,开发工具,只使用文本编辑器,以突出最本质的东西. 在Linux环境下,我们编辑一个文件: vim HelloWorld.java ...
随机推荐
- 团队项目-Beta冲刺2
博客介绍 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience 这个作业要求在哪里 https://w ...
- Object Detection API error: “ImportError: cannot import name anchor_generator_pb2”
Configuring the Object Detection API on Windows is a tricky task. You will find the answer in the fo ...
- Windows10 企业版激活
今天同大家分享一个Windows自带的激活方法(注:适用于win10 企业版 2019长期服务版,其他版本自行测试) 1.首先确保电脑网络通畅(不需要梯子) 2.以管理员方式运行cmd输入: slmg ...
- Spring注解开发系列Ⅰ--- 组件注册(上)
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...
- web自动化环境配置
1.下载chrome浏览器对应版本的驱动 下载地址:https://npm.taobao.org/mirrors/chromedriver 2.下载后将chromedriver放到python安装路径 ...
- 虚拟机ubuntu系统怎么添加 VMware tools
首先弹出光盘 然后安装 点击安装VMware tools 然后进入光盘 打开VMware tools 文件夹 将解压文件拉到桌面上 打开桌面上的文件夹 不选中文件 然后键入下面的内容 输入密码 输入y ...
- jQuery下载所有版本
下载地址:http://www.jq22.com/jquery-info122
- vue-particles做背景,鼠标动画粒子连线填坑(按钮没有点击响应)
为了提高页面展示效果,登录界面内容比较单一的,粒子效果作为背景经常使用到,vue工程中利用vue-particles可以很简单的实现页面的粒子背景效果. 解决问题: 以背景方式显示 无法获取按钮焦点, ...
- mysql基础--查询
1.mysql查询的五种子句: where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.group by子句通常和count ...
- Node.js实战--资源压缩与zlib模块
Blog:<NodeJS模块研究 - zlib> Github:https://github.com/dongyuanxin/blog nodejs 的 zlib 模块提供了资源压缩功能. ...