Javaインターフェースと抽象クラス


紙に書いてあるものは結局は眠りが浅いので,このことは必ずお辞儀をします。 --陸遊      用水路のあれはこれを点検しなければならない,源があるために生きてきたのだ。 --朱熹
インタフェース、インタフェースとは、他者からの呼び出しのための方法と関数を指す。
インターフェースの形式:
public interface interfaceName
{
        public static final  変数;
        void Function Name;
)
インターフェースの特徴:
1)インターフェースに変数と方法が含まれます。
2)変数は、暗黙的にpublic static final変数として指定されており、このような変数しかありません。
3)インターフェースの方法隠蔽的指定はpublic abstract方法であり、public abstract方法のみである。
4)インターフェースの中の方法はすべて具体的な実現があることができなくて、すべて抽象的な方法で、インターフェースは1種のきわめて抽象的なタイプです。
5)、一つの種類は複数のインターフェースを実現できます。抽象クラスを継承するしかないです。
6)インターフェースの方法は、サブクラスで実現されなければならない。
簡単な例:
//      
interface Say {
    public void sayMessage();
}
//     
class SayHello implements Say {
    public void sayMessage() {
        System.out.println("hello");
    }
}
class SayHi implements Say {
    public void sayMessage() {
        System.out.println("Hi");
    }
}
public class TestSay {
    public static void main(String[] args) {
        //     Say        Say say = new SayHello();
        say.sayMessage();
        Say say1 = new SayHi();
        say1.sayMessage();
    }
}
抽象クラス:
抽象類の一般的な定義は抽象的な方法を含む類であり、もちろんabstractで類を修飾するだけで、抽象的な方法がないというのも抽象的な類ですが、それはあまり意味がありません。
抽象類の形式:
public abstract abstractName
{
    abstract void function();
    その他の正常類の配布方法と変数。
)
抽象類の特徴:
1)抽象類は抽象的な方法だけでなく、普通のクラスと同じように変数と普通の方法があります。
2)、抽象的な方法はpublicあるいはprotectedでしかない。抽象的な種類は継承されるため、prvate方法は意味がない。
3)抽象類は、オブジェクトを作成するためには使用できません。継承されます。
4)サブクラスは抽象類を継承しているので、抽象類の抽象的な方法を実現しなければならない。さもなければ、このサブクラスも抽象類である。
抽象クラスの例:
public class Child extends Children{
    public Child(String name) {
        super(name);
    }

    public void printName() {
        System.out.println(super.getName());
    }


    public static void main(String[] args) {
        Child boy = new Child("Charley");
        System.out.println(boy.getName());
        Child girl = new Child("Queenie");
        girl.printName();
    }
}

abstract class Children {
    private String name;

    public Children(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    abstract void printName();
}
抽象類とインターフェースの違い:
(1)抽象類は構造方法があり、インターフェース内に構造方法がないこと。
(2)抽象類には普通のメンバー変数があります。インターフェースの変数は全部public staticです。 finalで飾られている
(3)抽象類には非抽象的な一般的な方法が含まれています。インターフェースでの方法はデフォルトで抽象的な方法です。
(4)抽象類における抽象的な方法はpublic、protected、デフォルトのタイプであり、インターフェースにおける抽象的な方法はpublicであり、デフォルトはpublic abstractactタイプであることができる。
(5)抽象類には静的な方法があり得るが、インターフェースには静的な方法が含まれていない。
(6)抽象的なクラスとインターフェースには静的なメンバー変数があります。抽象的なクラスの静的なメンバー変数は任意のアクセスタイプであってもいいです。インターフェースの静的なメンバー変数はpublic staticだけです。
(7)一つのクラスは複数のインターフェースを実現することができますが、一つの抽象クラスしか継承できません。