一、概念
多态:父类引用指向子类对象
前提:必须有子类关系或者类实现对象接口关系
使用:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法
二、定义格式
1.普通继承
父类:
[javascript] view plain copy 在CODE上查看代码片派生到我的代码片
public class Fu(){}
子类:
[javascript] view plain copy 在CODE上查看代码片派生到我的代码片
public class Zi extends Fu(){}
测试类:
[javascript] view plain copy 在CODE上查看代码片派生到我的代码片
public class Test {
public static void main(String[] args) {
Fu f=new Zi();
}
}
2.抽象类继承
抽象父类:
[javascript] view plain copy 在CODE上查看代码片派生到我的代码片
public abstract class Fu {
//定义抽象方法
public abstract void eat();
}
子类重写父类方法:
[javascript] view plain copy 在CODE上查看代码片派生到我的代码片
public class Zi extends Fu {
//子类重写父类方法
public void eat(){
System.out.println("子类爱吃饭");
}
}
3.接口实现
接口:
public interface Fu {
//定义抽象方法,可省略public abstract
public abstract void eat();
}
实现类:
public class Zi implements Fu {
//实现类重写接口中抽象方法
public void eat(){
System.out.println("子类爱吃饭");
}
}
instanceof:判断是否对象属于子类
三、多态优缺点
优点:当父类的引用指向子类对象时,隐藏了子类类型,提高了代码的扩展性。
弊端:只能使用父类共性的内容,而无法使用子类特有功能,功能有限制,此时可以通过向下转型。
小结:
多态其实就是子类继承父类之后要实现父类中的功能,这样就可以扩展子类的使用,正如上个例子中,电脑中USB功能的实现,可以传入键盘和鼠标这样就可以使得代码的复用性增强。