abstarct 关键字使用
package AbstarctTest;
/*
abstarct 关键字使用
1.abstract 抽象
2.abstract可以用来修饰的结构:类、方法
3.abstract修饰类:抽象类
#此类不能实例化
#抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程)
#开发中,都会提供抽象类的子类,让子类对象完全实例化,完成相关的操作
4、abstract修饰方法:抽象方法
#抽象方法只有方法的声明,没有方法体
#包含抽象方法的类,一定是一个抽象类,反之,抽象类中可以没有抽象方法的
#若子类重写了父类的所有的抽象方法后,此子类方可实例化
#若子类未重写父类中的所有抽象方法,则此子类也是一个抽象类,需要实现abstract修饰
abstract使用上的注意点:
1.abstract不能用来修饰属性、构造器等
2.abstrac不能用来修饰私有方法、静态方法、final的方法和类
*/
public abstract class OneTest {
private String name;
private int id;
private double salary;
public OneTest() {
}
public OneTest(String name, int id,double salary) {
this.name = name;
this.id = id;
this.salary = salary;
}
public abstract void work();
public static void main(String[] args) {
Manager ma = new Manager("库克",1001,5000,5000);
ma.work();
CommonEmployee com = new CommonEmployee();
com.work();
/*
创建了一个匿名子类的对象:on
*/
OneTest on = new OneTest(){
@Override
public void work() {
System.out.println("匿名子类的对象");
}
};
/*
匿名子类的匿名对象、
*/
method1(new OneTest() {
@Override
public void work() {
System.out.println("匿名子类的匿名对象");
}
});
}
public static void method1(OneTest o){
o.work();
}
}
class Manager extends OneTest{
private double bonus;
public void work(){
System.out.println("管理员工");
}
public Manager(double bonus) {
this.bonus = bonus;
}
public Manager(String name, int id, double salary, double bonus) {
super(name, id, salary);
this.bonus = bonus;
}
}
class CommonEmployee extends OneTest{
public void work(){
}
}

浙公网安备 33010602011771号