zoukankan      html  css  js  c++  java
  • 学习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();
    
        }
    }
  • 相关阅读:
    使用Entity Framework时要注意的一些性能问题
    在EntityFrameWork中定义值对象的注意事项
    关于EntityFrameWork中的贪婪加载和延时加载
    Centos上安装mplayer
    Centos上安装madplay
    编译可加载lcd驱动的linux uImage
    ok6410上移植madplay
    linux上安装Qt
    ok6410的mplayer移植
    交叉编译tslib
  • 原文地址:https://www.cnblogs.com/ZhuX-H/p/13198107.html
Copyright © 2011-2022 走看看