java多态怎么学_关于多态的学习

本文探讨了面向对象编程中的多态概念,包括形式(父类引用子类实例)、前提条件(继承或实现关系及方法重写),并通过实例展示其提高代码扩展性的优点。同时,剖析了多态的局限——无法直接访问子类特有的方法,及其解决方式——向下转型。
摘要由CSDN通过智能技术生成

1.多态的形式

多态是继封装、继承之后,面向对象的第三大特性。

多态的格式:父类 变量名 = new 子类();   或者    接口  变量名 = new 实现类();

多态的前提:(1) 要有继承或实现关系  (2)方法重写

2.多态的优点

提高代码的可扩展性,特别是将子类对象作为参数传入方法的时候。参考以下例子。

(1)定义了动物类,设置名字属性

1 public classAnimal {2 privateString name;3

4 publicString getName() {5 returnname;6 }7

8 public voidsetName(String name) {9 this.name =name;10 }11 }

(2)定义了猫类、狗类继承动物类

1 class Cat extendsAnimal {2

3 }4

5 class Dog extendsAnimal {6

7 }

(3)定义一个测试类,定义一个以动物类为参数的eat方法,创建猫狗的对象,设置名字属性,将猫狗对象作为参数传入eat方法里。

1 public classMain {2 public static voidmain(String[] args) {3 Cat c = newCat();4 c.setName("波斯猫");5 eat(c);6

7 Dog d = newDog();8 d.setName("阿拉斯加");9 eat(d);10 }11

12 public static voideat(Animal animal) {13 System.out.println(animal.getName() + "在吃饭");14 }15

16 }

(4)优点:省去了以下的方法定义

1 //public static void eat(Cat c) {2 //System.out.println(c.getName() + "在吃饭");3 //

4 //}public static void eat(Dog d) {5 //System.out.println(d.getName() + "在吃饭");6 //}

(5)测试类的运行结果

77574239870085afb7c5f467c014286c.png

3.多态的缺点

无法访问子类独有功能。

解决方案:向下转型后在调用子类独有功能。

向下转型(强制转换)格式:子类类型 变量名 = (子类类型) 父类变量名;

如:Aniaml a = new Cat();

Cat c =(Cat) a;

向下转型前提:转型的对象必须属于子类类型,否则报出了  ClassCastException ,类型转换异常。

如:Aniaml a = new Cat();  Dog d =(Dog) a;   就会报出异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值