原创文章,如有转载,请注明出处:http://blog.csdn.net/yihui823/article/details/6932952
把一段代码,业务逻辑剥离后,给大家看看。
基类:
子类1:
子类2:
调用的类:
运行结果当然是对的。可是,子类的行为,却定义在了父类之中了。也就是说,基类的“书”,却根据每本书的颜色去做行为判断的。
if (type == 1) {
System.out.println("Print with the green color.");
} else if (type == 2) {
System.out.println("Print with the blue color.");
} else {
System.out.println("Print with the white color.");
}
这个结构,扩展性不好,也不好维护,也不好阅读。
问当事人,当事人说,我在父类没法知道是哪个子类啊。但是这个业务是可以抽取的,所以就写成这个样子了。
其实,可以这么写的。
基类:
子类1:
子类2:
执行类:
把属于子类的行为,定义成抽象函数,由子类去实现。OK
分享到:
相关推荐
例如,在上面的示例代码中,我们使用了父类`Animal`的引用来指向子类`Cat`、`Dog`和`Pig`的对象。 二、多态的前提 多态的前提是类与类之间的关系。要么继承,要么实现。继承是指子类继承父类的所有成员变量和成员...
* 代码复用:继承可以使得子类复用父类的代码,从而提高代码的复用性。 * 提高开发效率:继承可以使得开发者更快速地开发应用程序。 * 扩展性:继承可以使得程序更容易扩展和维护。 二、抽象类和抽象方法 抽象类和...
只有它的非抽象子类可以创建对象,而抽象类定义的对象可以用于指向子类对象。例如, Pet p = new Pet("小白","白色",2,12,2000);//错误,抽象类不能实例化 Pet p = new Cat("咪咪","灰色",1,8,3000,"波斯猫");//正确...
* 多态可以使得对象在不同情况下表现出不同的行为。 * 多态可以提高代码的灵活性和可重用性。 多态的实现方式有两种:方法覆盖和方法重载。方法覆盖是指子类重写父类的方法,而方法重载是指同一个类中定义多个同名...
我们可以构造出一个固定的一组行为的抽象描 述, 但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类, 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来...
* 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。 * 控制子类扩展。模板方法只在特定点调用操作,这样就只允许在这些点进行扩展。 模板方法模式的例子: 在Java中,`JUnit`框架中的`...
在Java语言中,多态性是指子类可以重写父类的方法,使得子类可以具有不同的行为。多态性可以通过方法覆盖和方法重载实现。方法覆盖是指子类重新定义父类已有的方法,而方法重载是指子类定义了多个同名的方法,但具有...
在继承中,子类可以继承父类的属性,初始值为父类中该属性的初值,子类不能直接访问父类中非private的属性,但可以通过调用父类的public方法访问private属性。子类可以继承父类的成员方法,但无法直接访问父类的...
声明抽象类语法: abstract class{…… } 使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方 法的实现细节 abstract 修饰符 3-2 抽象类可以具有指向子类对象的对象引用 abstract 修饰...
使用抽象类定义一个“形状类”,能够计算周长和面积,分别用矩形、三角形、圆形对形状类进行继承,并定义测试类进行测试输出周长和面积。
继承可以使得子类拥有父类的所有特征和行为。 3. 多态:多态是指一种事物具有多种形态,比方猫具有猫类的形态,也具有动物的形态,多态的具体表现是父类引用指向子类对象,父类的引用也可以接收自己子类的对象。 三...
* 多态的弊端:父类的引用只能访问父类中有的成员而无法调用子类中特有的方法 五、抽象类和接口 抽象类和接口是JavaSE中两种特殊的类,提供了更多的灵活性和可扩展性。 * 抽象类:具有抽象方法和非抽象方法的类,...
通过继承,子类可以继承父类的属性和方法,并且可以对父类的方法进行覆盖。在本实验中,我们创立了Customer类,并添加了四个实例变量:firstName、lastName、accounts和numberOfAccounts。然后,我们添加了公有构造...
每个类都可以有多个对象,每个对象都有其特定的状态和行为。 * 类的组成部分:字段(成员变量)、方法、构造方法 * 对象的创建:使用new关键字创建对象 * 对象的访问:使用对象的引用来访问对象的成员变量和方法 ...
* 封装:提供了隐藏内部特性和行为的能力,保护对象内部状态,提高代码可用性和可维护性,严禁对象之间的不良交互,提高模块化。 * 继承:提供了从基类获取字段和方法的能力,代码重用,添加新特性。 * 多态:提供了...
这样一来,谁继承了Animal类,谁就有了它的属性和行为,子类不用管父类的行为是否合适,因为父类的行为“有名无实”,所以子类只需继承这些“名”,具体的“实”则由子类来完成。 这样的Animal类就是 抽象类 。
1、找出应用中可能需求变化的代码,把它们独立出来,不要和那些需求不变化的的代码混在一起 54 2、针对接口编程,而不要针对实现类编程 54 3、多用组合,少用继承(包含实现) 54 4、为了交互对象之间的松耦合设计而...
2. 继承(Inheritance):继承是指一个类可以继承另一个类的属性和方法,使得子类可以继承父类的所有特征和行为。 3. 多态(Polymorphism):多态是指一个类可以有多种形态,即一个类可以有多种不同的行为方式。 ...
在继承关系中,子类可以访问父类的公共(public)和受保护(protected)的成员,但不能访问父类的私有(private)成员。 知识点三:继承的设计 继承的设计主要涉及到继承关系的建立和继承成员的访问。继承关系的...
Java 中,一个子类只能继承一个父类,但一个父类可以有多个子类。 多线程 8. Java 语言具有许多优点和特点,哪个反映了 Java 程序并行机制的特点?(B)答案:多线性 Java 语言具有多线性特点,支持多线程编程,...