百木园-与人分享,
就是让自己快乐。

【java】学习路线-14

/*
抽象类 abstract

abstract class A{
    
}

注意abstract类中不一定需要有abstract方法
但是有abstract方法的类中,该类一定是abstract方法

抽象类不可以被构造,一般被用于继承

如果一个类继承自一个抽象类,那么抽象类的方法必须要在子类中完善(覆盖)。
*/

//忽然发现多态+抽象类这样的组合非常好用啊!

public class Learn02{
    public static void main(String[] aa){
        //A a = new A();//A是抽象的; 无法实例化
        B b = new B();
        b.method1();
        
        //看似是A,实际存的是B
        //此时A的抽象方法已经覆盖了,所以可以直接调用
        A a = new B();
        a.method1();
        
        System.out.println(\"----------\");
        
        Staff p1 = new Programmer(\"1001\",\"ckmm\");
        p1.signIn();
        p1.work();
        
        Staff p2 = new Boss(\"1002\",\"Remoo\",10002.98f);
        p2.signIn();
        p2.work();
        
        System.out.println(\"----------\");
        
        
        
    }
    
}

abstract class A{
    private int a ;
    
    abstract void method1();
}
class B extends A{
    public void method1(){
        System.out.println(\"覆盖了抽象类的方法\");
    }
}

//类似一个模板
abstract class Staff{
    private String id;
    private String name;
    
    public Staff(String id,String name){
        this.id = id;
        this.name = name;
    }
    
    public void signIn(){
        System.out.println(name + \"已签到\");
        
    }
    
    public abstract void work();
}

class Programmer extends Staff{
    public Programmer (String id , String name){
        super(id,name);//父类构造方法
    }
    //实现(覆盖)
    public void work(){
        System.out.println(\"写程序\");
    }
}

class Boss extends Staff{
    private float bonus;
    
    public Boss (String id , String name,float bonus){
        super(id,name);//父类构造方法
        this.bonus = bonus;
        
    }
    //实现(覆盖)
    public void work(){
        System.out.println(\"管理\");
    }
}


来源:https://www.cnblogs.com/remyuu/p/15987800.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 【java】学习路线-14

相关推荐

  • 暂无文章