学习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();

    }
}

 

上一篇:javaScript学习day03


下一篇:leecode笔记-day03(算法12,13)