抽象类的概念:简单的说就是,用abstract修饰的类就是抽象类。
抽象类的特点:
1、 抽象类可以有构造方法、成员变量、成员方法、抽象方法,但是不能被实例化
public class AbstractClass {
public static void main(String[] args) {
// 在IDE上会直接报红
// 尝试编译的时候会有错误:People is abstract; cannot be instantiated
People people = new People("张三", 22);
}
}
abstract class People {
private String name;
private Integer age;
public People(String name, Integer age) {
this.setName(name);
this.setAge(age);
System.out.println("This is Parent Class");
}
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 abstract void info();
}
2、抽象类必须被继承后,才能被使用。
public class AbstractClass {
public static void main(String[] args) {
People stu = new Student("张三", 22, "学生");
stu.info();
}
}
class Student extends People {
private String job;
public Student(String name, Integer age, String job) {
super(name, age);
this.setJob(job);
System.out.println("This is Child Class");
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
@Override
public void info() {
System.out.println("姓名:" + this.getName() + " 年龄:" + this.getAge() + " 职业:" + this.job);
}
}
This is Parent Class
This is Child Class
姓名:张三 年龄:22 职业:学生
3、子类如果没有实现父类的全部抽象方法,那么子类必定也是抽象类
4、抽象类的成员可以是private、默认、protected、public的,但是抽象方法只允许使用public、protected修饰,或者不用修饰符,其他任何修饰符都会报错。
abstract class Country {
public String name = "";
private static String landArea = "";
protected final int status = 0;
// 报错:The abstract method speak in type Country can only set a visibility modifier, one of public or protected
private abstract void speak();
}
在实际工作中,我见得多的还是,使用抽象类作为工具类来使用,至于为什么,听说是因为抽象类不能被实例化,到底是不是这个原因,我也不是很清楚,因为写这个人已经不在了
这只是我的个人学习之见,有不足请大家拍砖,不要客气