/*
抽象类 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("管理");
    }
}

最新文章

  1. C# 生成表格代碼
  2. 关于AngularJs中的路由学习总结
  3. Session的SqlServer模式的配置
  4. 每天一个linux命令(40):watch命令
  5. coco2dx实现翻拍效果
  6. linux内核中jiffies的回绕问题【转】
  7. 【转载】使用barman备份PostgreSQL
  8. java 23种设计模式及具体例子 收藏有时间慢慢看
  9. charles proxy
  10. UI-程序的运行顺序
  11. C++ STL知识点小结
  12. 【三分搜索算法】UVa 10385 - Duathlon
  13. sql server抓取表结构的语句
  14. nginx 中location和root
  15. 最难忘的Bug调试经历
  16. editplus使用:非法字符: \65279
  17. eclipse修改编译路径
  18. springMvc <form action="">提交跳转路径问题
  19. CentOS 7 学习(二) 配置Nginx反向代理
  20. .Net Core微服务系列--开篇

热门文章

  1. go-zero微服务实战系列(三、API定义和表结构设计)
  2. rpm 系 linux 系统中 repo 文件中的 $release 到底等于多少?
  3. JavaScript产生随机颜色
  4. 从0到1搭建一款Vue可配置视频播放器组件(Npm已发布)
  5. sql-DML-增删改
  6. Modeling Conversation Structure and Temporal Dynamics for Jointly Predicting Rumor Stance and Veracity(ACL-19)
  7. @Async注解的坑,小心
  8. Idea 的Test测试报错:java.lang.IllegalStateException: Failed to load ApplicationContext
  9. 2022-07-12 第六组 润土 JavaScript02学习笔记
  10. 5-2 SpringCloud | 微服务