什么是抽象类
abstract:关键字,用于修饰方法和类
抽象方法:不同类的方法是相似,但是具体内容又不太一样,所以我们只能抽取他的声明,没有具体的方法体,没有具体方法体的方法就是抽象方法
抽象类:有抽象方法的类必须是抽象类
抽象类的特点
如果一个类中有抽象方法,那么这个类必须是抽象类
抽象类和抽象方法必须被abstract修饰
抽象类不能创建对象(不能实例化)父类引用指向子类对象
抽象类中可以有非抽象的方法
抽象类也可以被其他类继承,也可以继承其他类
一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类
抽象类的细节
1.abstract关键字不能和那些关键字共存?
不能共存的关键字: private (私有的) static(静态的) final(最终的)
2.抽象类中是否可以有构造方法? 可以
作用:对成员变量进行初始化.
3. 抽象类中是否可以没有抽象方法? 可以
作用:不想被实例化.
抽象类的作用
1.作为一个父类存在,和继承中将的一般类一样的. 提取子类中共性的内容.
2.起到一个规范或者规定的作用.
3.限制的作用: 不能被实例化.
/*
*雇员(Employee)示例:
需求:
公司中
程序员(programmer)有姓名(name),工号(id),薪水(pay),工作内容(work)。
项目经理(Manager)除了有姓名(name),工号(id),薪水(pay),还有奖金(bonus),工作内容(work)
员工:
属性 name,id,pay
行为 work
*/
public class AbstractTest2 {
public static void main(String[] args) {
Programmer p = new Programmer();
p.work();
Manager m = new Manager();
m.work();
}
}
abstract class Employee {
String name;//姓名
String id;//id
double pay;//薪水
//工作
public abstract void work();
}
class Programmer extends Employee {
@Override
public void work() {
System.out.println("写代码");
}
}
class Manager extends Employee {
byte bonus;
@Override
public void work() {
System.out.println("盯着程序员写代码");
}
}