フルスタックプロシージャ11 Java
22.3.21.(月)
スキャナ
多形性(Overload)
オブジェクト形式のコピー(デフォルトのコピー)
1. Scanner
<簡単なスキャン例>
<スキャナを使用した簡単なプログラム>
2.多形性-過負荷
2-1. ロードメソッドのオーバーロード
- 원칙적으로 하나의 클래스 안에서는 동일한 이름의 메서드가 두 개 이상 존재할 수 없지만,
이를 가능하게 하는 예외적인 처리 기법.
2-2. 同じ名前のメソッドの条件の定義- 메서드 간의 파라미터가 서로 달라야 한다.
-> 파라미터의 데이터 타입이 서로 달라야 한다.
(데이터형이 동일하고 변수의 이름이 다른 경우는 동일한 파라미터로 인식된다.)
a( int a )
a( String a )
a( int b ) X
-> 파라미터의 갯수가 다르다.
a( int a )
a( int a, int b )
-> 서로 다른 데이터형을 갖는 파라미터들의 전달 순서가 다르다.
a( int a, int b )
a( int a, String b )
a( String a, int b )
- 리턴형이 다른 경우는 오버로드 성립에 아무런 영향을 주지 않는다.
- 파라미터의 데이터형이 서로 다르기 때문에 오버로드 성립
public void user( int a ) {}
public void user( long a ) {}
- 파라미터의 갯수가 서로 다르기 때문에 오버로드 성립
public void user( int a ) {}
public void user( int a, int b ) {}
- 데이터형의 전달 순서가 서로 다르기 때문에 오버로드가 성립
public void user( int a, long b ) {}
public void user( long a, int b ) {}
- 오버로드는 하나의 메서드에 대해 호출할 수 있는 모든 경우의 수를 미리 준비해 놓음으로써
메서드를 만드는 측은 번거로울 수 있지만, 메서드를 호출하는 측은 데이터 타입을 신경쓰지
않고 편리하게 사용할 수 있게 하기 위함이다.
<メソッドのOverloadingメソッドとmainメソッドの実行>
2-3. 作成者のOutload
- 객체 생성 방법의 다양화
- 생성자 역시 메서드의 한 종류이므로 Overload가 가능하다.
- 생성자를 Overload할 경우, 해당 클래스에 대해 '객체를 생성하는 방법' 을 다양하게
준비할 수 있게 된다.
<簡易ジェネレータのオーバーロード>
<ジェネレータのOverloadingとtoStringメソッド!>
2-4. このキーワードを使用したジェネレータOverload
- this 키워드의 용법
-> 메서드처럼 사용할 경우, 현재 클래스의 다른 생성자를 의미한다.
- this 키워드를 사용하여 생성자 Overload를 간결하게 처리하기
-> 파라미터가 서로 다른 생성자들이 하나의 완전한 생성자를 호출하도록 하여,
데이터의 초기화를 한 곳에서 일괄적으로 처리하도록 구현할 수 있다.
class Hello {
public Hello( String msg ) {
System.out.println( msg );
}
public Hello( ) {
// "public Hello( String msg )" 생성자를 호출
this( "안녕하세요" );
}
}
<このキーワードを使用したジェネレータOverloadingとtoString出力クラスの内容>
3.オブジェクトフォーマットのコピー
3-1. オブジェクト形式のコピー
- java 기본 유형의 데이터들처럼 객체 참조변수의 경우에도 형변환(casting)이 이루어진다.
- 서로 다른 클래스 유형으로부터 나온 객체 참조변수들 간의 대입에는 일정한 규칙이 있다.
Parent parent = new Child( );
- 위의 대입 연산에서 왼쪽 항( 부모, Parent )과 오른쪽 항( 자식, Child )의 객체 유형이
서로 다른 경우, 두 유형이 서로 상속관계에 있고 왼쪽 객체가 오른쪽 객체의
상위 클래스인 경우에만 암묵적인 형변환이 일어난다.
- 하위 클래스에서 상위 클래스 유형으로 할당하는 것은 가능하나, 그 반대의 경우에는
명시적 형변환을 해야 한다.
3-2. オブジェクト間で暗黙的に変換 - 암묵적 형변환이 가능한 경우
A a1 = new B( ); // 가능
A a2 = new X( ); // 가능
----------------------------
A a3 = new C( ); // 가능
A a4 = new Y( ); // 가능
----------------------------
B b1 = new C( ); // 가능
X x1 = new Y( ); // 가능
----------------------------
C c = new C( );
B b2 = c;
----------------------------
Y y = new Y( );
X x2 = y;
<暗黙的に変換された階層図(親コンテナを使用して子オブジェクトを作成!>
3-3. 暗黙的変換とメソッドオーバーライド
- 암묵적 형변환은 부모를 상속받는 자식 객체의 기능을
부모에게 받려 받는 기능만 사용하도록 제한한다.
- 그러므로 암묵적 형변환이 발생하게 되면 오버라이드 된 기능만 사용가능하고,
추가적으로 구현한 기능은 사용할 수 없다.
- 주의할 점은 기능의 제한이지, 기능의 변경은 아니라는 것이다.
<オブジェクト間の暗黙的な変換(サブクラスが親のコンテナとして作成された場合)とメソッドoverride>
Reference
この問題について(フルスタックプロシージャ11 Java), 我々は、より多くの情報をここで見つけました https://velog.io/@doby98/풀스택-과정-day11Javaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol