java多态口诀,Java之路---Day12(多态),多态Java

Java之路---Day12(多态),多态Java

2019-10-26-22:40:09

目录:

1.多态的概念

2.多态的分类

3.实现多态的三个必要条件

4.多态的格式

5.多态成员变量的使用特点

6.多态成员方法的使用特点

7.多态的好处

8.多态的向上和向下转型

1.多态的概念:

多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义

2.多态的分类:

编译时多态(静态):主要是指方法的重载,它是根据参数列表的不同来区分不同的方法

运行时多态(动态):它是通过动态绑定来实现的,也就是大家通常所说的多态性。

3.实现多态的三个必要条件:

1. 继承:在多态中必须存在有继承关系的子类和父类。

2.重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。

3.向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才既能可以调用父类的方法,又能调用子类的方法。

1 packagedemosummary.polymorphic;2

3 public classFu {4 //定义两个变量

5 doubled1;6 doubled2;7

8 //无参构造

9 publicFu() {10 }11

12 //全参构造

13 public Fu(double d1, doubled2) {14 this.d1 =d1;15 this.d2 =d2;16 }17

18 //设置一个方法

19 public void area(double d1,doubled2){20 }21 }

1 packagedemosummary.polymorphic;2 //创建一个继承父类的子类

3 public class Zi extendsFu{4 //重写父类中的方法

5 @Override6 public void area(double d1, doubled2) {7 double result = d1 *d2;8 System.out.println("计算结果:"+result);9 }10

11 //测试方法

12 public static voidmain(String[] args) {13 //向上转型(多态的写法)

14 Fu obj = newZi();15 obj.area(3.5,3.5);16 }17 }

4.多态的格式:

父类名称 对象名 = new 子类名称();

接口名称 对象名 = new 实现类名称();

5.多态成员变量的使用特点:

1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找。

2.间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找。

1 packagedemosummary.polymorphic;2 //定义一个父类

3 public classFu01 {4 //定义一个成员变量

5 int num = 10;6 //定义一个成员方法

7 public voidshowNum(){8 //定义一个局部变量9 //int num01 = 100;

10 System.out.println(num);11 //System.out.println(num01);

12 }13 }

1 packagedemosummary.polymorphic;2

3 public class Zi01 extendsFu01{4 //定义一个成员变量

5 int num = 20;6 //覆盖重写父类方法

7 @Override8 public voidshowNum() {9 //定义一个局部变量10 //int num01 = 200;

11 System.out.println(num);12 //System.out.println(num01);

13 }14 //定义一个测试类

15 public static voidmain(String[] args) {16 Fu01 obj = newZi01();17 System.out.println(obj.num);18 obj.showNum();19 }20 }

6.多态成员方法的使用特点:

在多态的代码当中,成员方法的访问规则是:

看new的是谁, 就优先用谁,没有则向上找。

口诀:编译看左边,运行看右边。

对比一下:

成员变量:编译看左边,运行还看左边。

成员方法:编译看左边,运行看右边。

7.多态的好处:

不使用多态的写法:

Teacher one = new Teacher();

one.work();

Assistant two = new Assistant();

two.work();

使用多态的写法:

Employee one = new Teacher();

one.work();

Employee two = new Assistant();

two.work();

对比结论:无论右边new的时候换那个子类对象,等号左边调用方法都不会变化

8.多态的向上和向下转型:

向上转型:

父类名称 对象名 =  new 子类名称();

含义:右侧创建一个子类对象,把它当成父类看待使用

注意事项:向上转型一定是安全的,从小范围转向大范围

向下转型:

子类名称 对象名 = (子类名称)父类对象;

含义:将父类对象还原成为本来的子类对象

注意事项

1.必须保证对象本来创建的时候。就是猫。才能向下转型成为猫。

2.如果对象创建的时候本来不是猫,现在非要向下转型成为猫,就会报错。

相关文章暂无相关文章

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值