抽象クラス
①abstract親クラスが抽象メソッドとして宣言することができ、何のコンテンツもサブクラスオーバーライドすることはできません。
同時にクラスとメソッドへの②abstractが宣言
③任意のステートメントを実行しない抽象メソッドは
④抽象クラスをインスタンス化することはできませんが、抽象クラスのサブクラスのインスタンスを作成することができます
⑤抽象クラスを唯一継承するために
⑥抽象クラスを実装するサブクラスを強制することができます抽象メソッドの定義された
⑦「標準」に事実と同等に定義された抽象メソッドを
pubulic abstract class Shape{//定义一个抽象类shape
pubulic abstract double are();//抽象方法没有执行语句(面积)
}
pubulic class Rect extends Shape{//继承于shape的rect类(长方形)
private final double weigth;
private final double length;
public Rect(double weigth,double length){
this.weigth=weigth;
this.length=length;
}
pubulic double are(){
return weigth*length;
}
}
pubulic class Circle extends Shape{//圆形
private final double R;
public Circle(double R){
this.R=R;
}
pubulic double are(){
return Math.PI*R*R;
}
}
public class Main{
public static void main(String [] args){
Shape s1=new Rect(200,100);//向上转型
Shape s2=new Circle(2);//注意方法签名要一样
System.out.println(s1.are());
System.out.println(s2.are());
}
}
Shape中没有给出求面积的具体执行语句,而是在子类中分别定义的
从Main函数可以看出我们只关心shape类当中有求面积的方法
我们并不想知道是怎么求的面积
抽象的なプログラミングの本質のために
①上部のコードのみが「仕様」を定義
通常コンパイラ必要としないかもしれない②サブクラス
③抽象メソッドの実装プロセスは、異なるサブクラスによって実装され、発信者がケアをしません
抽象方法定义了子类必须实现的接口规范
定义了抽象方法的类就是抽象类
从抽象类继承的子类必须实现抽象方法
如果不实现抽象方法该子类仍然是一个抽象类
如果一个抽象类没有任何执行语句,那么所有的方法都是抽象方法就可以把该抽象类改变为接口(interface)
Javaインタフェースは、純粋抽象インタフェースを内蔵しています
インタフェースを実装①を使用して実装
②1つのサブクラスでは、複数のインターフェースを実装することができる
区別用語を
特に定義によって①Javaインターフェースインターフェースインターフェースのみ署名方法
インタフェースをプログラミング②そのようなメソッドシグネチャ、データ形式、ネットワーク・プロトコルなどの仕様を、インターフェイスを参照しそして、他の
インターフェース継承等価拡張インターフェース
public interface Shape{
double are;//pubulic abustract就可以不写了
}
public interface Shape,person,student{//实现多个接口
// 抽象方法
}
インターフェース
①純粋な抽象インタフェース定義仕様
複数のインターフェイスを実装することができる②クラスは
③上方遷移および下方遷移のためのデータ型のインターフェースである
④インターフェース・インスタンス・フィールド定義しない
⑤インタフェースメソッドは、デフォルトで定義されています
public interface Shape{//因为是接口,所有的抽象方法都得被用到
double are();
default double zhouchang(){//有些地方用不到我们就把他改成default方法就不会报错了
return 0;//返回值0;
}
}