• 学习Java的Day03


    接口的特点!!!!

    • 接口不能创建对象

    • 接口的变量使用public static final修饰,如果不写默认添加;

    • 接口的方法为public abstrict,如果不写默认添加;

    • 子类必须重写接口中所有的抽象方法后,才能创建对象;

    • 如果子类不能够重写所有的抽象方法,子类必须定义成抽象类;

     

    接口和抽象类的区别!!!!!

    • 相同点
      • 都是位于继承的顶端,用于被其他类继承;
      • 都不能直接实例化对象;
      • 都包含了抽象方法,其他子类都必须覆写这些抽象方法;
    • 区别
      • 抽象类可以定义非抽象方法,避免子类重复实现这些方法,提高代码的复用性,接口只能包含抽象方法;
      • 一个类只能继承一个直接父类,却可以实现多个接口。(接口弥补了Java的单继承)
      • 类与类之间只能是单继承,接口与接口之间可以是多实现;
      • 抽象类可以定义普通的成员变量,接口只能定义 public static final 的成员变量;

      

    练习题:

    定义一个类是员工,员工有id和name属性,有一个方法是eat调用eat所有员工输出吃饭,有一个抽象方法是work,不同的员工工作的内容不同,定义3个类,程序员,老师,网管,分别调用work的时候”id为xx的name写代码”,”讲课”,”拉网线”。
    public abstract class Employee {
        private int id;
        private String name;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void eat() {
            System.out.println("该吃饭");
        }
    
        public abstract void work();
    
    }
    
    class programmer extends Employee {
    
        @Override
        public void work() {
            System.out.println("id : " + getId() + " 的 " + getName() + "写代码");
        }
    
    }
    class Teacher extends Employee {
    
        @Override
        public void work() {
            System.out.println("id : " + getId() + " 的 " + getName() + "讲课");
        }
    
    }
    class Managert extends Employee {
    
        @Override
        public void work() {
            System.out.println("id : " + getId() + " 的 " + getName() + "拉网线");
        }
    
    }
    class  Test {
        public static void main(String[] args) {
    
            programmer pro = new programmer();
            pro.setId(001);
            pro.setName("zxh" );
            pro.work();
            pro.eat();
    
        }
    }
  • 相关阅读:
    C++ Stream(串流)迭代器
    C++ deque const_iterator const_reverse_iterator运用实例
    C++ iter_swap()运用实例
    C++ distance()处理迭代器之间的距离
    数据库历险记(二) | Redis 和 Mecached 到底哪个好?
    数据库历险记(一) | MySQL这么好,为什么还有人用Oracle?
    面对海量请求,缓存设计还应该考虑哪些问题?
    90后小伙利用支付宝漏洞被抓, 我为什么拍手叫好?
    从抖音关闭评论,看服务治理的重要性
    优秀程序员具备的高效习惯,你具备吗?
  • 原文地址:https://www.cnblogs.com/ZhuX-H/p/13198107.html
Copyright © 2020-2023  润新知