JAVA 静态成员不具有多态性

多态 : (子类对象也是父类的对象)在继承或实现关系中 一个 父类/父接口 的 引用变量 它能指向父类对象也能指向子类对象, 
  它可以 根据当前时刻 指向的不同,自动 调用实际对象(子父类都有) 的方法
如果要父类引用 调用子类特有的方法,父类引用指向的应是子类的对象,然后强制转换成子类对象
 
总结: 1. 在 多态中调用静态成员的时候调用的只是引用的类的静态成员,跟对象没有关系 所 以静态成员不具有多态性
  2. 普通变量也不具有多态性

另: 抽象类(具有共性的类向上抽取出来的类)的抽象方法要具有多态性不能是静态的 //接口中的方法全是抽象方法,要具有多态性不能是静态的

代码: Zi.java

//静态成员不具有多态性
class Fu {
	public static String s = "Fu类静态变量s"; // 静态变量

	public static void f() { // 静态方法
		System.out.println("Fu类静态方法f");
	}
	//--------------------------------------
	public String str = "Fu类普通变量str";
	public void fun(){
		System.out.println("Fu类普通方法fun");
	}
}

public class Zi extends Fu {
	public static String s = "Zi类静态变量s";

	public static void f() {
		System.out.println("Zi类静态方法f");
	}
	//--------------------------------------
	public String str = "Zi类普通变量str";
	public void fun(){
		System.out.println("Zi类普通方法fun");
	}
	
	public static void main(String[] args) {
		Fu fu = new Zi(); // 父类引用指向子类对象
		
		
		System.out.println("========父类引用,子类对象--静态变量和方法============");
		System.out.println(fu.s);
		fu.f(); 
		
		System.out.println("\n=======父类引用,子类对象--普通变量和方法============");
		System.out.println(fu.str);
		fu.fun(); 
	}
		
}
/*
 * 结果是: 
 * 			========父类引用,子类对象--静态变量和方法============
 *			Fu类静态变量s
 *			Fu类静态方法f
 *
 *			=======父类引用,子类对象--普通变量和方法============
 *			Fu类普通变量str
 *			Zi类普通方法fun
 *
*/


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值