Java中抽象类
2021/9/19 20:06:23
本文主要是介绍Java中抽象类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
抽象类
和抽象类离不开的是抽象方法,由于子类中对同一个方法的实现方式不同,引入了方法和抽象类,比如:
package Chouxianglei; public class MainDemo { Animal a=new Cat(); a.eat(); int a=a.age; }
package Chouxianglei; public abstract class Animal { int age=20; public abstract void eat(); }
package Chouxianglei; public class Cat extends Animal{ int age=40; @Override public void eat() { System.out.println("猫吃鱼"); } }
(1)由于不同的Animal对eat方法的实现不尽相同,我们在抽象类Animal中定义了抽象方法eat,在继承时,子类必须实现父类中的所有抽象方法,除非子类也是抽象类
(2)抽象类不能直接实例化,我们只能通过子类来进行间接实例化,所以我们定义了变量a,a的引用是Animal类但其被实例化为Cat,对于a.eat();语句,程序会直接运行eat方法在子类Cat中的重载,对于a.age,由于a的引用是Animal类的,引用的地址存在栈中,a的实例化是Cat,存在堆中,程序运行时是无法直接访问堆内存的,也就无法访问堆内存中Cat类里面的age(因为程序直接访问的时栈内存,而栈中并不存有Cat类中age的引用),所以a.age访问的是Animal里面的age成员。(这里有点不好理解)
(3)抽象类在作为参数或返回值进行传递时,本质上传递的是抽象类的实例化对象,这里很好理解,方法本质上是对具体的东西进行处理,传个引用过去当然不合理啦
这篇关于Java中抽象类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南