抽象类与抽象方法

(抽象类必须被继承,抽象方法必须被重)

抽象类:包含一个抽象方法的类。

抽象方法:声明而未被实现的方法,抽象方法必须使用abstract关键字声明。

abstract class Person{
    private int age;
    private String name;
    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    public abstract void want();
}

class Student extends Person{
    private int score;
    
    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public Student(int age, String name,int score) {
        super(age, name);
        this.score=score;
    }

    @Override
    public void want() {
        System.out.println("姓名:"+getName()+"  年龄"+getAge()+"  成绩"+getScore());
    }
    
}

class Worker extends Person{
    private int money;
    
    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    public Worker(int age, String name,int money) {
        super(age, name);
        this.money=money;
        // TODO Auto-generated constructor stub
    }

    @Override
    public void want() {
        System.out.println("姓名:"+getName()+"  年龄"+getAge()+"  工资"+getMoney());
        
    }
    
    
}
public class AbsDemo01 {

    public static void main(String[] args) {
        Student s = new Student(10, "小明", 100);
        s.want();
        Worker w = new Worker(35, "大明", 1000);
        w.want();
    }

}

 

运行结果:

姓名:小明 年龄10 成绩100
姓名:大明 年龄35 工资1000

 

分析:

上面的源代码的抽象方法public abstract void want;(我可以把它理解为是他们子类公有的方法,每个Student和woker都有他们想要的东西!)

 

归纳:

1.抽象类不能被实例化。

2.抽象类不一定包含抽象方法,但是如果一个类中包含了抽象方法,则该类必须被定义为抽象类。

3.抽象类必须被继承。

4.抽象方法必须被重写。

总而言之,抽象类不能直接实例化,要通过其子类进行实例化。