0922 JSP - 메서드 오버라이딩
메서드 시그니처
= 메서드명, 메서드 전달인자의 타입, 전달인자의 개수
메서드 오버로딩
1) 메서드 명 동일
2) 메서드의 전달 인자 타입 다름
3) 메서드의 전달 인자 개수 다름
메서드 오버라이딩
1) 메서드 명 동일
2) 메서드의 전달 인자 타입 동일
3) 메서드의 전달 인자 개수 동일
4) 접근지정자의 범위가 좁아질 수 없음
public void method() {}
private void method() {}
public void method() {}
부모의 메서드
(생략) void method() {}
void method();
오버라이딩 된 메서드 , 사용할 수 있는 것 골라보기
(ㅇ)public void method() {}
(ㅇ)private void method() {}
(ㅇ)void method() {} (x) private void method() {}
package ex;
class Parent1{
public void pprn() {
System.out.println("P : pprn() ");
}
}
class Child1 extends Parent1{
// public void cprn() {
// System.out.println("C : cprn() ");
// }
// alt shift s + v
@Override
public void pprn() {
super.pprn();
//System.out.println("P : pprn() ");
}
public void cprn() {
System.out.println("C : cprn() ");
}
}
// main() 포함하는 메서드
public class Test2 {
public static void main(String[] args) {
Parent1 p1 = new Parent1();
p1.pprn();
System.out.println("----------------------------------");
Child1 c1 = new Child1();
c1.cprn();
c1.pprn();
}
}
P : pprn()
----------------------------------
C : cprn()
P : pprn()
super
부모의 객체 레퍼런스
super.pprn()
부모의 은닉된 메서드를 호출하겠다는 뜻.
this
나 자신의 객체 레퍼런스
=> 처음 클래스 생성 시 컴파일러가 1개씩 생성됨
생성자는 상속 가능하다 [o/x]
=> 상속 안됨!
상속 되지 않는 유일한 멤버 메서드
개발자가 별도의 명시적 호출 없이 자동으로 서브클래스의 생성자는 (부모)슈퍼 클래스의 디폴트 생성자를 호출
class Itwill{
public Itwill() {
System.out.println(" Itwill 생성자 ");
}
}
class ItwillBusan extends Itwill{
public ItwillBusan() {
System.out.println(" ItwillBusan 생성자 ");
}
}
Itwill iw = new Itwill(); //itwill 생성자만 만들어진다.
System.out.println("----------------------------------");
ItwillBusan iwb = new ItwillBusan(); // itwill 생성자, itwillbusan 생성자 만들어진다.
생성자를 지웠을 때, 실행 할 수 있을까?
=> 생성자가 사라졌는데, 기본 생성자를 호출 할 수 있는지?
지워도 생성자가 있음!
기본 생성자는 컴파일러가 자동 생성 해준다. 다만, 오버로딩 된 생성자가 없을 경우에만.
class Itwill{
//기본 생성자는 컴파일러가 자동 생성 해준다.
// => 오버로딩 된 생성자가 없을 경우
//클래스 구성요소
//1) 변수
//2) 생성자
//3) 메서드
// public Itwill() {
// System.out.println(" Itwill 생성자 ");
// }
}