基于接口的多态Java_JAVA 入门初学心得体会4(多态,接口)

2023-05-16

1.多态的基础是继承

2.什么是多态?下边就是多态!

假设Animal是Dog类的父类

在测试函数中 就可以在main()中

Animal obj1=new Animal();//本类

Animal obj2=new Dog();//父类的引用是可以指向子类和本类的对象,

Dog obj3=new Animal();(这个是报错的,子类的引用不可以指向父类引用)

3.方法的多态也是基于继承的。如果方法只有子类有,是扩展的新功能,父类没有。则不能通过本类对象使用这个方法。

4.多态引用类型转换Dog dog=new Dog();

自动类型转换:Animal animal=dog; 把dog转换成animal 相当于int变成double

强制类型转换:Dog dog=(Dog)animal; animal换成了Dog类型

Cat cat=(Cat)animal;(这个不行,为什么?因为Cat不等于Dog,animal转换成Dog类型,和Cat类型不识别)

Instanceof可以解决防线问题;

If(animal instanceof Cat){

Cat cat=(Cat)animal;

}

Else{

System.out.println(“无法转换”);

}

5.JAVA中的抽象类 abstract class 类名{}

Abstract

限制规定子类必须实现什么方法,但不关注实现细节(定义抽象方法,只需要声明,不需要实现)

Public abstract void call(); //抽象方法没有方法体以分号结束。

抽象类的作用是什么?

因为他不关注方法的实现,所以可以为空,子类去帮这个空去写具体的方法。运用与前边介绍过的多态知识的相结合就可以更灵活的使用方法。

6.举个例子,把继承,多态,抽象类集中总结一下:

最开始没接触多态的时候

建四个类分别是父类Animal类,子类Dog类,子类Cat类和测试类,假设都有一个方法吃

Animal animal=new Animal(); animal.eat(); //具体类里边的代码不写了,想想一下 里边有一个eat方法,方法体是S.o.p(“吃”);

Dog dog=new Dog(); dog.eat(); //eat方法里为 (“狗吃”);

Cat cat=new Cat(); cat.eat(); //eat方法为 (”猫吃”);

以上是最初的形态:

在学习多态之后,父类的引用可以指向子类的对象

Animal animal1=new A…. animal1.eat(); 就是本类的eat

Animal animal2=new Dog(); animal2.eat(); 直接指向狗的eat

接下来就是abstract类。

可能目前我的理解比较浅显,有不对的待经验丰富后可以指正修改。

在Animal类中运用abstract 修饰符

Public abstract void eat(); //可以省略

然后建一个继承的Dog类或者Cat类。

在他们子类的继承的函数体里写东西,写具体的实现功能。这样子可以省略父类函数,减少代码的书写。

在测试类中直接

Animal animal1=new Cat(); animal1.eat(); 感觉跟多态的区别就是多了个关键字,然后主函数可以省略好多东西。只需要知道有吃的功能,具体吃什么由各自子函数去定义,狗吃骨头猫吃鱼等等吧。

7.接口:

1.抽象类强调一种共性功能,接口强调拓展功能。相当于插了个u盘

2 接口前一般加 ‘I’ 区别于其他类 例如 IPlayGame

第一步,定义一个接口

Public abstract interface IPlayGame{

Public abstract playGame();

}

第二步:

在原来多态,抽象的基础上 子类后边再加个implements 接口例如:IPlayGame

实现接口的时候,必须实现接口里的方法,在子类基础的方法下加入接口方法体。

第三步:在测试类中引用并使用

IPlayGame ip1=new SmartPhone();

Ip1.playGame();

IPlayGame ip2=new Psp();

Ip2.playGame();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于接口的多态Java_JAVA 入门初学心得体会4(多态,接口) 的相关文章

随机推荐