JAVA:Abstract Class-2020年第3期15期


1 abstract class Vehicle {
2	String name;
3	abstract public String getName(String val);
4	public String getName() {
5		return "Vehicle name:" + name;
6	}
7 }
8 class Car extends Vehicle {
9	String name;
10	public Car(String val) {
11		name = super.name = val;
12	}
13	public String getName(String val) {
14		return "Car name:" + val;
15	}
16	public String getName(byte val[]) {
17		return "Car name:" + val;
18		}
19 }
20 public class Gisafirst {
21	public static void main(String args[]) {
22		Vehicle obj = new Car("Spark");
23		System.out.print(obj.getName());
24	}
25 }
行番号
  • 抽象クラスVerhicle
  • を作成
  • 抽象クラス
    :クラスの共通フィールドとメソッドを定義する非特定クラス(未完成の設計図)
  • 抽象クラスはメソッドのフラグのみを定義し、メソッドの実際の操作メソッドは抽象クラスを継承するエンティティクラスによって
  • を委任する.
  • 宣言メソッド:抽象クラス名{...}
  • プロパティ
    1)抽象クラスオブジェクトXの作成
    2)抽象クラスとエンティティクラスに継承関係(extends)がある
  • abstract public String getName(String val);
    :抽象メソッドgetName->パラメータの作成:文字列val
  • public String getName()
  • 過負荷
    :異なるタイプの呼び出しに応答するために、複数の同じ名前の関数を定義します(抽象メソッドgetNameと関数getNameは同じ名前ですが、パラメータが異なるため、応答が異なります).
  • name = super.name = val;
    :パラメータとして受信した文字列を親(親)クラスの変数nameに代入し、クラスの変数nameに代入します.

  • public String getName(String val) {
    :作成関数getName▶パラメータ:文字列val▶戻り値:String
  • public String getName(byte val[]) {
    :関数getName▶パラメータの作成:整数配列val
  • 過負荷
    :複数の同名関数を定義し、パラメータのタイプと数を変更して、異なるタイプの呼び出しに応答します.
    (つまり、抽象メソッドを実体化する関数getNameと関数getNameの名前は同じですが、パラメータが異なるため、応答が異なります.)
    ※抽象クラスと継承関係の場合
    抽象クラスで宣言された抽象メソッドを宣言する必要があります.
  • Vehicle obj = new Car("Spark");
    :クラスCarのオブジェクトobjを作成し、データ型を抽象クラスとして指定▶パラメータ:文字列Spark
  • System.out.print(obj.getName());
    :オブジェクトobjの関数getName()を呼び出し、戻り値を出力します.
    ->関数getName()のパラメータ:なし
    ※オーバーロードの結果からパラメータのない関数getName()を呼び出す.
    もし.クラスCarに関数getName()が含まれている場合、優先度はサブクラスであるため、クラスCarの関数getName()が呼び出されます.
  • ソース
    https://blog.naver.com/PostView.nhn?blogId=gisafirst&logNo=222291179379