Java 抽象クラス定義と抽象メソッドのサンプル コード共有
この記事では主にJavaの抽象クラスとインターフェースの違いに関する関連情報を紹介しますので、必要な方は参考にしてください...
抽象クラスはオブジェクトをインスタンス化できないことを除いて、クラスの抽象クラスはオブジェクトをインスタンス化できないため、抽象クラスを使用する前に継承する必要があります。このため、通常は設計段階で抽象クラスを設計するかどうかを決定します。抽象クラス
/* 文件名 : Employee.java */ public abstract class Employee { private String name; private String address; private int number; public Employee(String name, String address, int number) { System.out.println("Constructing an Employee"); this.name = name; this.address = address; this.number = number; } public double computePay() { System.out.println("Inside Employee computePay"); return 0.0; } public void mailCheck() { System.out.println("Mailing a check to " + this.name + " " + this.address); } public String toString() { return name + " " + address + " " + number; } public String getName() { return name; } public String getAddress() { return address; } public void setAddress(String newAddress) { address = newAddress; } public int getNumber() { return number; } }
Employee クラスも例外ではありませんが、クラスは抽象クラスですが、3 つのメンバー変数、7 つのメンバー メソッド、および 1 つのコンストラクターがあることに注意してください。 ここで、次の例を試してみると:
/* 文件名 : AbstractDemo.java */ public class AbstractDemo { public static void main(String [] args) { /* 以下是不允许的,会引发错误 */ Employee e = new Employee("George W.", "Houston, TX", 43); System.out.println("\n Call mailCheck using Employee reference--"); e.mailCheck(); } }
AbstractDemo クラスをコンパイルしようとすると、次のエラーが生成されます:
Employee.java:46: Employee is abstract; cannot be instantiated Employee e = new Employee("George W.", "Houston, TX", 43); ^ 1 error
通常のメソッドを通じて Employee クラスを継承できます:
/* 文件名 : Salary.java */ public class Salary extends Employee { private double salary; //Annual salary public Salary(String name, String address, int number, double salary) { super(name, address, number); setSalary(salary); } public void mailCheck() { System.out.println("Within mailCheck of Salary class "); System.out.println("Mailing check to " + getName() + " with salary " + salary); } public double getSalary() { return salary; } public void setSalary(double newSalary) { if(newSalary >= 0.0) { salary = newSalary; } } public double computePay() { System.out.println("Computing salary pay for " + getName()); return salary/52; } }
EmployeeクラスのAnオブジェクトはインスタンス化できませんが、Salaryクラスのオブジェクトをインスタンス化すると、オブジェクトはEmployeeクラスから3つのメンバ変数と7つのメンバメソッドを継承します。
/* 文件名 : AbstractDemo.java */ public class AbstractDemo { public static void main(String [] args) { Salary s = new Salary("Mohd Mohtashim", "Ambehta, UP", 3, 3600.00); Employee e = new Salary("John Adams", "Boston, MA", 2, 2400.00); System.out.println("Call mailCheck using Salary reference --"); s.mailCheck(); System.out.println("\n Call mailCheck using Employee reference--"); e.mailCheck(); } }
上記のプログラムをコンパイルして実行した結果は次のとおりです:
Constructing an Employee Constructing an Employee Call mailCheck using Salary reference -- Within mailCheck of Salary class Mailing check to Mohd Mohtashim with salary 3600.0 Call mailCheck using Employee reference-- Within mailCheck of Salary class Mailing check to John Adams with salary 2400.
特別なメンバーメソッドを含むクラスを設計し、メソッドの具体的な実装が決定されている場合このメソッドは、親クラスで抽象メソッドとして宣言できます。
Abstract キーワードは、抽象メソッドを宣言するためにも使用できます。抽象メソッドにはメソッド名のみが含まれ、メソッド本体は含まれません。
抽象メソッドが定義されておらず、メソッド名の直後に中括弧の代わりにセミコロンが続いています。
public abstract class Employee { private String name; private String address; private int number; public abstract double computePay(); //其余代码 }
抽象メソッドを宣言すると、次の 2 つの結果が生じます:
クラスに抽象メソッドが含まれる場合、そのクラスは抽象クラスでなければなりません。
サブクラスは、親クラスの抽象メソッドをオーバーライドするか、それ自体を抽象クラスとして宣言する必要があります。
抽象メソッドを継承するサブクラスは、そのメソッドを
する必要があります。それ以外の場合は、サブクラスも抽象として宣言する必要があります。最終的には、サブクラスは抽象メソッドを実装する必要があります。そうしないと、最初の親クラスも最後のサブクラスもオブジェクトのインスタンス化に使用できません。
Salary クラスが Employee クラスを継承する場合、computePay() メソッドを実装する必要があります:
/* 文件名 : Salary.java */ public class Salary extends Employee { private double salary; // Annual salary public double computePay() { System.out.println("Computing salary pay for " + getName()); return salary/52; } //其余代码 }
以上がJava 抽象クラス定義と抽象メソッドのサンプル コード共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。
