多态总结

多态是某一事物在不同时刻表现出的不同状态。

多态的好处:

  • 1. 消除类型之间的耦合关系
  • 2. 可替换性
  • 3. 可扩充性
  • 4. 接口性
  • 5. 灵活性
  • 6. 简化性
package cn.itcast.duotai;
class Fu{
	public int num1 = 100;
	public void show(){
		System.out.println("fu show");
	}
	public static void function() {
		System.out.println("fu function");
	}
}
class Zi extends Fu{
	public int num1 = 1000;
	public void show() {
		// TODO Auto-generated method stub
		System.out.println("zi show");
	}
	public static void function() {
		System.out.println("zi function");
	}
	
}
public class Test {
	public static void main(String[] args) {
		Fu f = new Zi();
		System.out.println(f.num1);
		f.show();
		f.function();
	}
}

结果是

100
zi show
fu function

结论:

        A:成员变量
            编译看左边,运行看左边(因为变量已经被赋值,所以不能再改变了)。
        B:构造方法
            创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化。
        C:成员方法
            编译看左边,运行看右边(右边的子类把父类的方法重写了)。
        D:静态方法
            编译看左边,运行看左边  (静态算不上重写方法,它是和类相关,所以,访问还是左边的)


注意:这时调用method方法会报错

原因:

编译看左边,但左边的Fu没有method(),所以编译失败。这就是多态的弊端:不能访问子类特有方法

解决方法:

1. 再new一个子,用子调用method方法

public class Test {
	public static void main(String[] args) {
		Fu f = new Zi();
		Zi z = new Zi();
		z.method();

		
	}

这种方法一般不用,因为还要创建子类对象,占内存。

2.向下转型(把父的引用赋值给子的引用)

public class Test {
	public static void main(String[] args) {
		Fu f = new Zi();
		Zi z = (Zi)f;
		z.method();
	}

引申:

向上转型:Fu f = new Zi()

向下转型:Zi z = (Zi)f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值