Java基础00-抽象类20

1. 抽象类

1.1 抽象类概述

 

代码示例:
没有{}大括号的方法就是一个没有方法体的方法,要把它定义成抽象方法,就要给它加一个abstract关键字,而类中有抽象方法,该类也必须是一个抽象类,所以给类也加一个abstract关键字。
将方法体去掉是因为,动物类中的吃东西本身就是一个抽象的概念,你不知道吃的是什么东西,只知道吃东西。
所以干脆不写,让它在子类中被子类重写,而子类比如猫,它是可以具有到吃什么东西的,“猫吃老鼠” “猫吃耗子”,都是可以的。

1.2 抽象类的特点

 

1.3 抽象类的成员特点

 1.4 案例:猫和狗

public abstract class AbstractAnimal {
    private String name;
    private int age;

    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }

    public void setAge(int age){
        this.age = age;
    }

    public int getAge(){
        return age;
    }
    public AbstractAnimal(){
        System.out.println("抽象类无参构造方法");
    }

    public AbstractAnimal(String name,int age){
        System.out.println("抽象类有参构造方法");
    }

    public abstract void eat();
}
public class CatExtendsAbstract extends AbstractAnimal {
    public CatExtendsAbstract(){
        super();
        System.out.println("猫子类无参构造方法");
    }

    public CatExtendsAbstract(String name, int age){
        super(name, age);
        System.out.println("猫子类有参构造方法");
    }

    public void eat(){
        System.out.println("猫吃鱼");
    }
}
public class DogExtendsAbstract extends AbstractAnimal {
    public DogExtendsAbstract(){
        System.out.println("狗子类无参构造方法");
    }

    public DogExtendsAbstract(String name, int age){
        System.out.println("狗子类有参构造方法");
    }

    public void eat(){
        System.out.println("狗吃骨头");
    }
}
public class AnimalAbstractDemo {
    public static void main(String[] args) {
        AbstractAnimal a = new CatExtendsAbstract();
        a.eat();        AbstractAnimal b = new DogExtendsAbstract();
        b.eat();
    }
}

 输出:

抽象类无参构造方法
猫子类无参构造方法
猫吃鱼
抽象类无参构造方法
狗子类无参构造方法
狗吃骨头

 

posted on 2021-04-16 13:24  花溪月影  阅读(45)  评论(0编辑  收藏  举报