抽象クラスとは何ですか
抽象メソッドがある場合は、「カテゴリ」では、このクラスは抽象クラスと呼ばれ、抽象クラスの前に必要です。
抽象メソッド:多状態において、プロセスは、しばしば冗長母体廃棄抽象形成方法の選択方法であるので、何らの方法は、その方法は、抽象メソッドを呼び出していない場合は、1つの方法。そのコードの形式:
public abstract class Mammal {//父类
public abstract void move();
}
詳細な抽象クラス
1は、親クラス抽象メソッドならば、あなたはそれ以外の場合は、サブクラスが抽象クラス、抽象クラスでなければなりませんし、オブジェクトを作成することはできませんので、抽象メソッドをサブクラス化する必要があります。
public abstract class Mammal {//父类
public abstract void move();
public abstract void breathe();
}
サブクラスは、次のように書くことができます。
public class Whale extends Mammal{//子类
@Override
public void move() {
System.out.println("靠鱼鳍游泳");
}
@Override
public void breathe() {
System.out.println("靠鱼鳃游泳");
}
}
または:
public abstract class Whale extends Mammal{//子类
}
2、抽象クラスは、オブジェクトを作成することはできませんが、コンストラクタを持つことができます。
public abstract class Mammal {//父类
public Mammal(int age) {//可以创建Mammal方法
//Mammal mammal = new Mammal();mammal不能创建对象
}
public abstract void move();
public abstract void breathe();
}
図3に示すように、抽象クラスが抽象メソッドの缶ではなく、必須抽象メソッドが抽象クラスであり、
図4に示すように、抽象クラスは、最終的な変形によって(直接多型反射)しません。
図5は、通常のクラス抽象クラスとの間の差:
。Aクラスは共通であってもよい抽象オブジェクト・クラスを作成できません。
Bには一般的なカテゴリが存在しない;.、抽象クラスが抽象的修飾をキーワード有する
C抽象クラスは、抽象メソッド、一般的なカテゴリを有することができます。確かに抽象メソッド。
インターフェースは何ですか
ソースファイル内のすべての方法は、全体の抽象メソッドは、これはインタフェース・ソース・ファイルを定義することができる場合。コード形式は次の通り:
public interface IMammal {
public abstract void move();
public abstract void breathe();
}
詳細インタフェース
1、何インタフェースコンストラクタはありません。
パブリック抽象への2、インターフェイスメソッドのデフォルト値は、それを無視することができます。
public interface IMammal {
/*public IMammal() {//不能构造方法
}*/
void move();//忽略public abstract
void breathe();//忽略public abstract
}
図3に示すように、インターフェースは、複数のインタフェースを継承することができます。
interface IA{//接口A
}
interface IB{//接口B
}
public interface Mammal extends IA,IB{//继承接口A,B
void move();
void breathe();
}
4、状態:インターフェイス名はI(コード仕様)で始まる
5、インタフェース変数のデフォルトのpublic staticへの最終的な(すなわち静的定数です)。だから、インタフェースの名前の変数はすべて大文字でなければなりません。
public interface IMammal{
void move();
void breathe();
int AGE = 957;
}
public class Test {
public static void main(String[] args) {
//IMmammal.AGE = 125; //不可实现,代码报错,从而证明5。
System.out.println(IMammal.AGE);
}
}
図6は、インターフェイスは、抽象メソッドを継承器具の使用を必要とします。
インタフェースを実装する場合7、あなたは、インターフェイスで定義された定数を継承することができます。
public interface IMammal{
void move();
void breathe();
int AGE = 957;
}
public class Whale implements IMammal{
@Override
public void move() {
}
@Override
public void breathe() {
}
}
public class Test {
public static void main(String[] args) {
System.out.println(IMammal.AGE);
System.out.println(Whale.AGE);
}
}
すべての抽象メソッドがインタフェースを実装していない場合は8、クラスは、そのクラスは抽象的でなければなりません。
public interface IMammal{
void move();
void breathe();
int AGE = 957;
}
public abstract class IWhale implements IMammal{
@Override
public void move() {
}
}
図9に示すように、クラスは複数のインターフェイスを実装することができます。
public abstract class IWhale implements IMammal,List{
@Override
public void move() {
}
@Override
public void breathe() {
}
@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
}
図10は、instanceofの目的は、後者のタイプの前部を指摘するかどうかを決定するために、結果は、boolean型です。
public class Test {
public static void main(String[] args) {
Whale whale = new Whale();
System.out.println(whale instanceof Whale);
System.out.println(whale instanceof Object);//Object为所有类的父类
System.out.println(whale instanceof IMmammal);
}
}
結果は次のとおりです。
trueに
trueに
trueに
違い
1、およびオブジェクトコンストラクタ:
抽象クラスは、オブジェクトを作成することはできませんが、コンストラクタを持つことができ、
インターフェースインターフェースは、直接オブジェクトを作成するために、新しいキーワードを使用することはできませんが、限定されないが、それはオブジェクトを作成できません、この方法は、抽象的にすることはできません。
2、修飾子:
クラスの前に抽象追加するための抽象クラスの必要性、
インタフェースはインタフェース名、および無クラスの前にインターフェイスを追加する必要があります。