java__多态笔记

  1. 概述同一个对象在不同时刻体现出来的不同状态。
  2. 多态的前提:             

                A:有继承或者实现关系。
B:有方法重写。

C:有父类或者父接口引用指向子类对象。

    3. 多态的分类:   

                      a:具体类多态
class Fu {}
class Zi extends Fu {}

Fu f = new Zi();
b:抽象类多态
abstract class Fu {}
class Zi extends Fu {}

Fu f = new Zi();
c:接口多态
interface Fu {}
class Zi implements Fu {}

Fu f = new Zi();

    4.多态中的成员访问特点:

                A:成员变量
编译看左边,运行看左边
B:构造方法
子类的构造都会默认访问父类构造
C:成员方法
编译看左边,运行看右边
D:静态方法
编译看左边,运行看左边
(巧记上述)
上述编译运行 结果的原因  ?

因为成员方法有重写。

    5.多态的好处:

                A:提高代码的维护性(继承体现)

B:提高代码的扩展性(多态体现)

    6. 多态的弊端:

                父不能使用子的特有功能。

现象:

子可以当作父使用,父不能当作子使用。

    7.多态中的转型

                A:向上转型
从子到父(Fu f = new Zi();)
B:向下转型

从父到子(Zi z = (Zi)f; //要求该f必须是能够转换为Zi的)

    8.举个例子吧

class Fu {
		public int age = 40;
		
		public void speak() {
			System.out.println("i am Fu");
		}
	}
	
	class Son extendsFu {
		public int age = 20;
		
		public void speak() {
			System.out.println("i am Son");
		}
		
		public void playGame() {
			System.out.println("play chess");
		}
	}
	//若向上转型
		Fu f = new Son();
		System.out.println(f.age); //40
		f.speak(); //i am Son
	//向下转型
		Son k = (Son) f;
		System.out.println(k.age); //20
		k.speak(); //i am Son
		k.playGame(); //play chess

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值