用父类声明对象和用子类声明对象.

本文通过一个Java示例程序介绍了如何实现类的继承与方法的多态性。示例中包括父类(Father)与子类(Son),演示了在不同情况下对象的创建、方法调用以及属性访问的具体行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class Father{
int i=10;
public void printInfo(){
System.out.println("In Father");
}
}

class Son extends Father{
int i=20;
public void printInfo(){
System.out.println("In Son");
}
}

class Test{
public static void main(String args[]){
Son mySon=new Son(); //调用子类的变量和子类的方法
Father myFather=new Father(); //调用父类的变量和方法的方法
Father myFather2=mySon; //调用父类的变量和子类的方法
//mySon
System.out.println(mySon.i);
mySon.printInfo();
System.out.println();
//myFather
System.out.println(myFather.i);
myFather.printInfo();
System.out.println();
//myFather2
System.out.println(myFather2.i);
myFather2.printInfo();
System.out.println();
}
}

首先都是访问本身类的东西(方法与属性)的.(父类定义就调用父类的,子类定义的话就调用子类的)


当一个父类定义的变量引用一个子类实例时,调用一个方法时,这个方法将会调用子类,因为方法被覆盖.

情况就特殊在父类定义变量,而引用子类对像的时候.
Father(父类) myFather = new Son(子类)();
所以输出为:

20
IN SON
10
IN FATHOR
10
IN SON

通过引用类型的变量来访问所引用对象的方法和属性的时候,jvm采用以下绑定规则。
实例方法与引用变量实际引用的对象的方法绑定,动态绑定,因为是在运行时由jvm动态决定的
静态方法,成员变量(静态和实例变量)与引用变量所声明的静态方法和成员变量绑定,这用绑定是在编译阶段做的绑定,是静态绑定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值