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(){

}

}

posted @ 2020-07-14 21:19  GuanErA  阅读(170)  评论(0)    收藏  举报