抽象类与抽象方法
(抽象类必须被继承,抽象方法必须被重)
抽象类:包含一个抽象方法的类。
抽象方法:声明而未被实现的方法,抽象方法必须使用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.抽象方法必须被重写。
总而言之,抽象类不能直接实例化,要通过其子类进行实例化。