4.2 学习总结-I.抽象类
最编程
2024-04-03 07:02:35
...
1.1定义:
抽象类主要用来抽取子类的通用特性,作为子类的模板,它不能被实例化,只能被用作为子类的超类。
2.概括:
有方法声明,没有方法体”的一类方法统称为抽象方法,抽象方法用关键字abstract修饰。需要注意的是,如果一个方法已经确定是抽象方法,那么它绝不能再有方法体,即不能出现大括号,而是只需要在()后面添加一个分号即可
3.注意点:拥有抽象方法的类一定是抽象类;但是抽象类不一定有抽象方法。
1.2使用场景
当父类需要定义一个方法,却不能明确该方法的具体实现细节时,可以将该方法定义为abstract,具体实现细节延迟到子类。(让子类重写这个方法)
public abstract class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
//如果不知道在这个方法中应该写什么,可以通过抽象方法的形式,让子类进行重写
public abstract void eat();
}
(若父类中定义了一个抽象方法,要求其所有非抽象子类都必须重写该抽象方法。否则会报错)
1.3抽象类的特点
1.abstract关键字 :
abstract关键字只能用于修饰类和方法,用于声明抽象类和抽象方法。
格式:
修饰符 abstract class 类名()
修饰符 abstract 返回值类型 方法名(形参例表)
2.抽象类不能被实例化,只能创建其子类对象.
3. 如果某个类继承了一个抽象类,那么这个类有两个选择——要么实现父类所有的抽象方法,要么子类本身也定义成抽象类。
4.事例
Animal(父类)
public abstract class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void drink(){
System.out.println("喝水");
}
//如果不知道在这个方法中应该写什么,可以通过抽象方法的形式,让子类进行重写
public abstract void eat();
}
子类
//子类Cat
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫在吃鱼");
}
}
//子类Dog
public class Dog extends Animal{
@Override
public void eat() {
System.out.println("狗在吃骨头");
}
}
//子类Sleep
public class Sleep extends Animal{
@Override
public void eat() {
System.out.println("山羊在吃草");
}
}
测试
import jdk.nashorn.internal.ir.CatchNode;
public class TEXT {
public static void main(String[] args) {
Dog d=new Dog();
d.setName("小狗");
d.setAge(1);
System.out.println(d.getName()+", "+d.getAge());
d.eat();
d.drink();
Cat c =new Cat();
c.setName("小猫");
c.setAge(2);
System.out.println(c.getName()+", "+c.getAge());
c.eat();
c.drink();
Sleep s=new Sleep();
s.setName("山羊");
s.setAge(3);
System.out.println(s.getName()+", "+s.getAge());
s.eat();
s.drink();
}
}
运行结果
总结:抽象类中我们主要学习其抽象方法的使用, (抽象类中的成员只比非抽象类多一种——抽象方法。其他都和非抽象类一样)
上一篇: Debian 配置国内软件源
下一篇: Python 课后练习 II
推荐阅读