没有合适的资源?快使用搜索试试~ 我知道了~
Java面向对象(高级)- 抽象类与抽象方法(或abstract关键字)
需积分: 5 0 下载量 53 浏览量
2023-11-25
10:05:14
上传
评论
收藏 2.09MB PDF 举报
温馨提示
试读
39页
Java面向对象(高级)-- 抽象类与抽象方法(或abstract关键字)
资源推荐
资源详情
资源评论
类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体
的实例,这样的类叫做抽象类。
将父类加上abstract标识之后,就不用用它造对象。
💬
既然父类抽象了,功能也并不具体,子类也需要重写它的方法才好具体使用。那为啥还需要父类
呢?
1、父类中的一些方法,子类确实会重写,但也会存在一些方法子类直接拿去用。若没有父类,每个
子类就都需要自己写。
2、父类的属性子类可以直接拿来用,若没有父类,子类还需要自己去声明。
3、多态的使用前提,基于继承性,比如一个方法的形参就是Person类型的,真正调用方法的时
候,传进来的却是具体子类的对象。不管传什么子类对象,都赋给了Person。若是没有父类,那就麻烦
了,一堆方法需要一个个写,不靠谱。
所以继承关系还是需要的,在继承的前提下,这个 抽象类 只是表明父类不想实例化了。
(2)举例2
我们声明一些几何图形类:圆、矩形、三角形类等,发现这些类都有共同特征:求面积、求周长。
那么这些共同特征应该抽取到一个共同父类:几何图形类中。
但是这些方法在父类中又 无法给出具体的实现 (因为不知道具体什么图形),而是应该交给子类各自
具体实现。
那么父类在声明这些方法时, 就只有方法签名,没有方法体 (具体的需要子类去重写),我们把没有
方法体的方法称为抽象方法。
Java语法规定,包含抽象方法的类必须是抽象类。
二、案例引入
(1)抽象类
先将继承关系表示出来:
【Person.java】
【Student.java】
package yuyi08;
/**
* ClassName: Person
* Package: yuyi08
* Description:
*
* @Author 雨翼轻尘
* @Create 2023/11/23 0023 13:13
*/
public class Person {
String name;
int age;
//构造器
public Person(){
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//方法
public void eat(){
System.out.println("人吃饭");
}
public void sleep(){
System.out.println("人睡觉");
}
}
package yuyi08;
/**
* ClassName: Student
* Package: yuyi08
* Description:
*
* @Author 雨翼轻尘
* @Create 2023/11/23 0023 13:15
*/
public class Student extends Person{
String school;
public Student() {
【AbstractTest.java】
输出结果:
现在在现有的 class Person 前面加上 abstract 。
Person 类就叫做抽象类。意味着它不能够实例化了。
上一节说了 final ,final也可以用来修饰Person,表示不能有子类。
}
public Student(String name, int age, String school) {
super(name, age);
this.school = school;
}
public void eat(){
System.out.println("学生多吃有营养的食物");
}
public void sleep(){
System.out.println("学生不要熬夜");
}
}
package yuyi08;
/**
* ClassName: AbstractTest
* Package: yuyi08
* Description:
*
* @Author 雨翼轻尘
* @Create 2023/11/23 0023 13:17
*/
public class AbstractTest {
public static void main(String[] args) {
Person p1=new Person();
p1.eat();
Student s1=new Student();
s1.eat();
}
}
剩余38页未读,继续阅读
资源评论
雨翼轻尘
- 粉丝: 6w+
- 资源: 130
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功