抽象クラスを使用するときに注意する必要があるいくつかの重要なポイント:
1つ以上の抽象的なメソッドを含むクラスは、抽象クラスとして宣言する必要があります。
クラスを抽象クラスとして宣言するには、必ずしも抽象的な方法が含まれているわけではありません。
一般に、特定の方法を抽象クラスに含めるべきではないと考えられています。
抽象クラスをインスタンス化することはできません。つまり、このクラスのオブジェクトを作成することはできません。
例コード:
コードコピーは次のとおりです。
Java.util。*をインポートします。
/**
*このプログラムは抽象クラスを示しています。
* @version 1.01 2004-02-21
* @author cay horstmann
*/
パブリッククラスの人のテスト
{
public static void main(string [] args)
{
Person [] People = new Person [2];
//学生と従業員のオブジェクトで人の配列を埋める
People [0] =新しい従業員( "Harry Hacker"、50000、1989、10、1);
People [1] =新しい学生( "Maria Morris"、 "Computer Science");
//すべての個人オブジェクトの名前と説明を印刷する
for(人P:人)
System.out.println(p.getName() + "、" + p.getDescription());
}
}
抽象クラスの人
{
パブリックパーソン(文字列n)
{
name = n;
}
public Abstract String getDescription();
public string getName()
{
返品名;
}
プライベート文字列名;
}
クラスの従業員は人を拡張します
{
公務員(String N、Double S、int Year、int month、int day)
{
スーパー(n);
給与= s;
グレゴリアンカレンダーカレンダー=新しいグレゴリアンカレンダー(年、月 - 1、日);
hireday = calendar.getTime();
}
public double getSalary()
{
返品給与;
}
パブリックデートgethireday()
{
Hiredayを返します。
}
public string getDescription()
{
return string.format( "給与のある従業員$%。2f"、給与);
}
パブリックボイド共存(2倍)
{
ダブルレイズ=給与 * bypercent / 100;
給与 +=昇給;
}
プライベートダブルサラリー;
プライベートデート雇用;
}
クラスの学生は人を拡張します
{
/**
* @param n学生の名前
* @param m学生の専攻
*/
パブリック学生(文字列N、文字列M)
{
// nをスーパークラスコンストラクターに渡します
スーパー(n);
Major = M;
}
public string getDescription()
{
「In」を専攻する学生を返します +メジャー。
}
プライベートストリングメジャー。
}
コードブロック:
コードコピーは次のとおりです。
for(人P:人)
System.out.println(p.getName() + "、" + p.getDescription());
p.getDescription()では、特定のサブクラスのサブクラスオブジェクトを参照する方法。
Compilerはクラスで宣言された通話メソッドのみを許可するため、直接クラスでは省略できません。