Java学习--面向对象的三大特征之一

本文详细阐述了在多态中成员函数与成员变量的特点,包括编译与运行时的行为,通过实例展示了非静态函数、静态函数及成员变量的调用方式,并分析了输出结果。

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

在多态中,成员函数有以下特点:
1.在编译时期:参阅引用型变量所属的类中是否有 调用的方法。如果有,编译通过,没有,编译失败。
2.在运行时期:参阅对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。

在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。

在多态中,静态成员函数的特点:

无论编译和运行 ,都参考左边。

举例说明,如下所示:

class MultiShapeDemo3
{
	public static void main(String[] args)
	{
		Father f1=new Child();
		f1.method1();
		f1.method2();
		f1.method4();
		System.out.println(f1.num);
		
		Child f2=new Child();
		f2.method1();
		f2.method2();
		f2.method4();
		System.out.println(f2.num);
		
		
	}
	
}

class Father
{
	int num=3;
	void method1()
	{
		System.out.println("Father method_1");	
	}
	
	void method2()
	{
		System.out.println("Father method_2");	
	}
	
	static void method4()
	{
		System.out.println("Father method_4");	
	}
}

class Child extends Father
{
	int num=5;
	void method1()
	{
		System.out.println("Child method_1");	
	}
	
	void method3()
	{
		System.out.println("Child method_3");	
	}
	
	static void method4()
	{
		System.out.println("Child method_4");	
	}
}
上述实例中,定义了两个类Father和Child,主函数在调用时,定义了两个对象f1和f2,其中对象f1引用了子类,故在调用时,如果是非静态函数 ,则会调用子类中相关的覆写方法,对于静态函数和成员变量,则会调用父类中相关的方法,所以此示例中的 输出结果如下:

Child method_1
Father method_2
Father method_4
3
Child method_1
Father method_2
Child method_4
5

通过以上分析,大家在面试时在遇到此类问题的时候,应该就会有很好的 解决方法了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值