微信公众号:Java患者
专注Java领域技术分享
多态
什么是多态
多态是同一个行为具有多个不同表现形式或形态的能力
多态的前提
要有继承/实现关系
要有方法重写
要有父类引用指向子类对象
多态的成员特点
Animal a = new Dog();
当代码这个样子的时候,(也就是说当编译类型和运行类型不同)多态就产生了.对象a具有两种类型
编译类型: 声明对象变量的类型,Animal,表示把对象看成什么类型
运行类型:对象的真实类型,Dog
多态中的成员访问特点之成员变量
编译看左边,运行看左边
多态中的成员访问特点之成员方法
编译看左边,运行看右边
多态中的成员访问特点之静态成员方法
编译看左边,运行看左边
静态和类相关,算不上重写,所以,访问还是左边的
只有非静态的成员方法,编译看左边,运行看右边
案例
public class Fu {
int num = 5;
static void method1(){
System.out.println("fu类中的method1");
}
void method2(){
System.out.println("fu类中的method2");
}
}
public class Zi extends Fu{
int num = 8 ;
static void method1(){
System.out.println("zi method1");
}
void method2(){
System.out.println("zi method2");
}
}
public class DuoTaiDemo {
public static void main(String[] args){
Fu f = new Zi();
System.out.println(f.num);//5,与父类一致
f.method1();//fu类中的method1,与父类一致
f.method2();//zi method2,编译时与父类一致,运行时与子类一致
Zi z = new Zi();
System.out.println(z.num);//8,与zi类中的method一致
z.method1();//zi method1
z.method2();//zi method2
}
}
5
fu类中的method1
zi method2
8
zi method1
zi method2
多态的好处和弊端
提高了代码的维护性(继承保证)
提高了代码的扩展性(多态保证)
不能使用子类特有的属性和行为(弊端)
资料 · 福利
回复 【Java】即可获取最新零基础Java视频资料
回复 【激活】即可获取IDEA、datagrip等系统激活方式
回复 【面试题】即可获取Java技术相关面试题
往期 · 精彩
专注分享Java技术,跟我一起学习吧
长按识别二维码关注