含有抽象方法的類一定是抽象類,但是抽象類不一定含有抽象方法。
Person類(沒有抽象方法的抽象類):
public abstract class Person {
private String name;
private int age;
public Person() {
}
public Person(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;
}
}
Student類(子類):
public class Student extends Person {
// Person person = new Person();//抽象類不能new實例化
public Student() { //通過子類繼承,調用抽象父類的無參構造函數
// super();
}
public Student(String name, int age) {//通過子類繼承,調用抽象父類的有參構造函數
super(name, age);
}
}
測試類:
public class AbstractDemo {
public static void main(String[] args) {
Student student = new Student("張三", 24);
System.out.println(student.getName());
student.setAge(20);
System.out.println(student.getAge());
}
}
總結:
沒有抽象方法的抽象類的作用:
1.抽象類不能new實例化
2.抽象類可以有構造方法,但是構造方法不能是抽象方法
3.通過子類繼承,可以調用抽象類的構造方法