Javaを学ぶDay 03

4766 ワード

インタフェースの特徴!!!
  • インタフェースはオブジェクト
  • を作成できません.
  • インタフェースの変数はpublic static final修飾を使用し、デフォルトの追加を書かない場合.
  • インタフェースの方法はpublic abstrictであり、デフォルトの追加を書かない場合.
  • サブクラスは、オブジェクトを作成するには、インタフェース内のすべての抽象メソッドを書き換える必要があります.
  • サブクラスがすべての抽象メソッドを書き換えることができない場合、サブクラスは抽象クラスとして定義されなければならない.

  •  
    インタフェースと抽象クラスの違い!!!
  • 同じ点
  • は、継承の先端に位置し、他のクラスに継承されるために使用される.
  • は、オブジェクトを直接インスタンス化することはできません.
  • は抽象的な方法を含み、他のサブクラスはこれらの抽象的な方法を上書きしなければならない.

  • の違い
  • 抽象クラスは非抽象方法を定義することができ、サブクラスがこれらの方法を繰り返し実現することを避け、コードの多重性を高め、インタフェースは抽象方法しか含まれない.
  • クラスは、1つの直接親のみを継承できますが、複数のインタフェースを実装できます.(インタフェースはJavaの単一継承を補う)
  • クラスとクラスの間には単一の継承しかなく、インタフェースとインタフェースの間には複数の実装が可能である.
  • 抽象クラスは普通のメンバー変数を定義することができ、インタフェースはpublic static finalのメンバー変数しか定義できない.


  •   
    練習問題:
    1つのクラスを定義するのは従業員で、従業員にはidとnameの属性があり、1つの方法はeatがeatを呼び出してeatのすべての従業員が食事を出力することであり、1つの抽象的な方法は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();
    
        }
    }