多态性是面向对象中的第三大主要特征 ,多态性在继承性的基础之上扩展出来的概念,也就是说可以实现父子类之间的互相转换处理。
多态性的基本概念
在JAVA之中对于多态性有两种实现的模式:
方法的多态性:
- 方法的重载:同一个方法名称可以根据传入的参数的类型或个数的不同实现不同功能的执行
- 方法的覆写:同一个方法可能根据使用子类的不同有不同的实现
对象的多态性:
父子实例之间的转换处理,它有两种模式:
- 对象向上转型:父类 父类实例 = 子类实例、自动完成转换
- 对象向下转型: 子类 子类实例 = (子类)父类实例、强制完成转换。
从实际的转型处理来讲,大部分情况下考虑最多的一定是对象的向上转型(90%)、对于对象的向下转型往往都在使用子类的特殊功能(子类可以对父类进行功能扩充)的时候要采用向下转型(3%),还有一些时候是不会考虑转型的(String类、7%)
这一节讲的太精彩了,我们学校里老师根本不会讲的那么清晰明了啊!
abstract class Message {
private String type;
public abstract String getConnectInfo();
public void setType(){
this.type = type ;
}
public String getType() {
return this.type;
}
}
class DatabaseMessage extends Message{
public String getConnectInfo() {
return "数据库连接信息";
}
}
public class Test {
public static void main(String[] args) {
DatabaseMessage msg =new DatabaseMessage();
msg.getConnectInfo();
System.out.println(msg.getConnectInfo());
}
}
子类很少会继承一个完善的类,在以后父类的设计中,要优先考虑的一定是一个抽像类。
而抽象类是不能实例化的。
要使用抽象类必须有:
1 抽象类必须有子类,子类使用一个extends继承抽象类
2 抽象类的子类不是抽象类,一定要复写抽象类中的全部抽象方法
3 抽象类的对象实例化可以利用对象多态性通过子类向上转型完成
泛型怎么改善工厂的啊啊啊啊_(:3」∠)_
这个地方没讲完啊啊啊啊 啊