Javaにおける抽象クラス

Javaにおける抽象クラスは、デフォルトのメソッド実装を含むことを除けば、インターフェースに似ています。抽象クラスは、本体のない抽象メソッドを持つことができ、実装されたメソッドも持つことができます。abstractキーワードは、抽象クラスと抽象メソッドを作成するために使用されます。Javaの抽象クラスはインスタンス化することはできません。抽象クラスは、主にサブクラスが拡張し、抽象メソッドを実装し、抽象クラス内の実装されたメソッドをオーバーライドまたは使用するための基盤を提供するために使用されます。

Javaにおける抽象クラス

以下は、Javaでの抽象クラスの簡単な例です。

package com.scdev.design;

//abstract class
public abstract class Person {
	
	private String name;
	private String gender;
	
	public Person(String nm, String gen){
		this.name=nm;
		this.gender=gen;
	}
	
	//abstract method
	public abstract void work();
	
	@Override
	public String toString(){
		return "Name="+this.name+"::Gender="+this.gender;
	}

	public void changeName(String newName) {
		this.name = newName;
	}	
}

work()というメソッドは抽象メソッドであり、本体がありません。以下はJavaにおいて抽象クラスを拡張する具象クラスの例です。

package com.scdev.design;

public class Employee extends Person {
	
	private int empId;
	
	public Employee(String nm, String gen, int id) {
		super(nm, gen);
		this.empId=id;
	}

	@Override
	public void work() {
		if(empId == 0){
			System.out.println("Not working");
		}else{
			System.out.println("Working as employee!!");
		}
	}
	
	public static void main(String args[]){
		//coding in terms of abstract classes
		Person student = new Employee("Dove","Female",0);
		Person employee = new Employee("Pankaj","Male",123);
		student.work();
		employee.work();
		//using method implemented in abstract class - inheritance
		employee.changeName("Pankaj Kumar");
		System.out.println(employee.toString());
	}

}

以下の日本語訳を提供いたします(1つの選択肢のみ):
Javaにおいて、サブクラスのEmployeeは継承を使用してスーパークラスのPersonのプロパティとメソッドを継承することに注意してください。また、EmployeeクラスでOverrideアノテーションが使用されていることにも注目してください。メソッドをオーバーライドする際に常にOverrideアノテーションを使用すべき理由については、詳細をお読みください。

Javaにおける抽象クラスの重要なポイント

    1. Javaでは、abstractキーワードを使用して抽象クラスを作成します。

 

    1. Javaの抽象クラスはインスタンス化できません。

 

    1. 抽象キーワードを使用して抽象メソッドを作成することができますが、抽象メソッドには本体がありません。

 

    1. クラスに抽象メソッドがある場合、そのクラスは抽象キーワードを使用して抽象クラスでなければなりません。そうでない場合、コンパイルされません。

 

    1. 抽象クラスには抽象メソッドを宣言しなくても構いません。抽象メソッドを宣言しないクラスでも、抽象としてマークすることができます。

 

    1. 抽象クラスにメソッドの実装がない場合は、Javaでは複数のクラスの継承をサポートしていないため、インターフェースを使用する方がよいです。

 

    1. Javaの抽象クラスのサブクラスは、サブクラスが抽象クラスでない限り、すべての抽象メソッドを実装する必要があります。

 

    1. インターフェースのすべてのメソッドは、静的メソッドまたはデフォルトメソッドでない限り、暗黙的に抽象です。Java 8では、インターフェースに静的メソッドとデフォルトメソッドが追加されています。詳細については、Java 8のインターフェースの変更をご覧ください。

 

    1. Javaの抽象クラスは、インターフェースのメソッドの実装を提供せずにインターフェースを実装することができます。

 

    1. Javaの抽象クラスは、すべてのサブクラスに共通のメソッド実装を提供するために、またはデフォルトの実装を提供するために使用されます。

 

    main()メソッドがあれば、抽象クラスを他のクラスと同様に実行することができます。

これがJavaの抽象クラスに関するすべてです。もし何か重要な点を見落としていたら、コメントで教えてください。

コメントを残す 0

Your email address will not be published. Required fields are marked *