🐸[JAVA]継承(2)🐸

1979 ワード

継承と作成者


ジェネレータは、継承中に作成されるのではなく、サブクラスオブジェクトの作成時に親クラスのパラメータレスジェネレータを自動的に呼び出します.

  • 親を継承する子クラスを作成すると、親のパラメータレスジェネレータが自動的に呼び出されるため、継承した親にパラメータレスジェネレータがない場合はエラーが発生します.

  • 特別な作成者がいない場合は、デフォルトの作成者である作成者(){}を実行します.

  • 親クラスのパラメータレスジェネレータを自動的に実行します.パラメータなしジェネレータがない場合はエラーが発生します.

  • メソッドの変更(子クラスの作成者にパラメータ値がないが、親クラスにパラメータ値がある場合)
    (1)親にコンストラクション関数(){}を追加する.
    (2)サブクラスでsuper()メソッド呼び出しを使用する
    class Greeting {
    	public String name = "김유진";
    	public int age = 18;
    	public void sayHello() {
    		System.out.println("씨 안녕하세요.");
    	}
    }
    class EngHello extends Greeting{
    	public String name = "Mr.hee";
    	public int age = 18;
    	public void sayHello() {
    		System.out.println(age + "살의 "+name+" Nice to meet you");
    	}
    	public void test() {
    		System.out.print(super.age + "살의 "+ super.name);
    		super.sayHello();
    	}
    	public static void main(String args[]) {
    		EngHello eng = new EngHello();
    		eng.sayHello();
    		eng.test();
    	}
    }
  • superキーワードとsuper()メソッド


    継承関係のクラスで、スーパーキーsuper()メソッドを使用して親クラスのメンバー変数またはジェネレータを呼び出します.

    スーパーキー


    子クラスで親クラスのメンバー変数またはメソッドを明示的に呼び出す場合に使用します.
    形式
    (1) super. 親のメンバー変数
    (2) super. 親のメソッド名

    super()メソッド


    親クラスを明示的に呼び出す作成者は、まず子クラスの作成者から呼び出さなければなりません.
    形式
    (1) super( )
    (2)super(パラメータ...)
    class Grandfather {
    	private String name;
    	private int age;
    	public Grandfather(String name,int age) {
    		this.name = name;
    		this.age = age;
    		System.out.println("Grandfather 생성자"+" "+this.name +" "+this.age+"살이다.");
    	}
    }
    class Myclass extends Grandfather{
    	
    	public Myclass(String str,int age) {
    		super(str, age);
    		System.out.println("MyClass 생성자");
    	}
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Myclass s = new Myclass("김유진",18);
    	}
    
    }