什么是多态
多态:某一事物,在不同时刻表现出来的不同状态。
多态的前提和体现:
1. 有继承关系,
2. 有方法重写,
3. 有父类引用指向子类对象。
class fu {
public void show(){
System.out.println("show fu");
}
}
class zi extends fu{
public void show(){
System.out.println("show zi");
}
}
class duotai{
public static void main(String[] args){
fu f = new zi();
}
}
多态中类的访问特点
fu f = new zi();
成员变量:编译看左边,运行看左边。(存在方法重写,所以看右边)
构造方法:创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化。
成员方法:编译看左边,运行看右边。
静态方法:编译看左边,运行看左边。
示例
package test1;
class person{
public void eat(){
System.out.println("吃饭");
}
}
class Sourthperson extends person{
public void eat(){
System.out.println("吃米饭");
}
public void jingshang(){
System.out.println("经商");
}
}
class Northperson extends person{
public void eat(){
System.out.println("吃面条");
}
public void yanjiu(){
System.out.println("研究");
}
}
public class Duotaitest {
public static void main(String[] args){
person p = new Sourthperson();
p.eat();
Sourthperson sp =(Sourthperson)p;
sp.eat();
sp.jingshang ();
p = new Northperson();
p.eat();
Northperson np = (Northperson)p;
np.eat();
np.yanjiu();
}
}
结果:
吃米饭
吃米饭
经商
吃面条
吃面条
研究
示例:
package test1;
class a{
public void show(){
show2();
}
public void show2(){
System.out.println("我");
}
}
class b extends a{
public void show2(){
System.out.println("爱");
}
}
class c extends b{
public void show(){
super.show();
}
public void show2(){
System.out.println("你");
}
}
public class Duotaitest2 {
public static void main(String[] args){
a a = new b();
a.show();
b b = new c();
b.show();
}
}
结果:
爱
你