봉봉의 개인 블로그
2017-06-05-E 본문
생성자 메서드 오버로딩
이런식의 코드가 있다.
이때 만약 생성자 메서드를 오버로딩 하지 않고 B01 클래스 안에 메서드 또는 값을 호출하고 싶을때는6번과 같이 생성자 메서드를 만들고 conn02.getM_id() 이런식으로 호출하였지만
8~14번줄과 같이 생성자를 오버로딩해줍니다. 이런식으로 하게 되면 A01메서드에서5번줄과같이 생성자 메서드를 사용할수있다.
Static 정적 키워드
변수와 메서드에 static
먼저 아래와 같이 B01을 선언해줍니다.
그후 A01 클래스 파일안을
위와 같이 선언해주면 8~15번까지는 모드 0 이라는 숫자가 뜬다 그런데 여기서
17~19번라인까지 값을 set해줬을때
21~23번까지의 라인까지는 b01부분을 통해 셋한부분이라서 숫자가 10 20 30 이렇게 적혀서 출력된다
하지만 여기서 b02로 set 된 부분의 a 와 b 는 0으로 출력되는데 반면에 static 으로 선언된 total 부분은 그대로 30으로 출력된다 즉 비록 다른 객체지만 static 으로 선언된 부분은 다른곳에 따로 생성되어 따로 정적인 부분에 생성되어 값이 셋된다는것이다. 그리고 static 은 28번 줄과같이 바로 클래스명. 을 통해서 바로 호출할수도 있다.
아래는 출력된 값이다.
다음으로는
추상클래스와 추상메서드
에 대해 알아 보겠다.
먼저 아래와 같이 클래스를 생성하고 메서드들을 선언해줍니다.
위코드들과 같이 작성을 해줍니다 설명을 조금하자면 먼저
C01클래스는 부모클래스 라고도 하면 슈퍼 클래스 라고 합니다.
그리고 B01클래스는 부모클래스 C01 클래스 안에 있는 것들을 상속받아서 사용합니다.
여기서 상속이라는것은 C01 클래스안에 있는것들을 B01사용할수 있다는것이다.
그런데 이때 부모클래스 안에 있는 메서드를 자신에 맞게 오버라이딩해서 사용할수있다.
즉 위 사진과 같이 abstract 즉 추상클래스가 있다. 그리고 추상클래스 안에 abstract 추상메서드가 하나 있고 평범한 일반 메서드가 하나 있다. 그런데 추상메서드는 정말 아무것도 없는 메서드 이기 때문에 상속받는 자식클래스 B01 에서는 아무것도 없는 추상메서드를 상속 받앗기 때문에 반드시 오버라이딩 해서 사용하여야 한다.
interface(인터페이스)
상수와 추상메서드를 갖는다.
설명을 하자면 먼저 D01 B01 클래스는 interface를 상속 받습니다.
interface는 상수와 추상메서드만을 가집니다. 그래서 D01과 B01은 interface 를 상속받앗기때문에 즉 추상메서드는 아무것도없는 메서드기 때문에 반드시 오버라이딩 해야합니다 그래서 D01 B01 클래스는 상속받은 test 메서드를 오버라이딩해서 A01 main 메서드에서 호출됩니다.
상속
오버라이딩
이런식의 코드와 클래스가 있다
먼저 C01 은 부모 클래스 슈퍼 클래스이고 B01 은 C01 을 상속받는 자식클래스 이다.
즉 상속은 B01은 C01 안에 있는것들을 사용할수 있다. 그리고 만약 C01에서 받은 c_a 메서드를 오버라이딩 하지않고 (6~7번줄이 없으면) main 에서 b01.c_a() 호출시 C01 안에 있는 것이 호출되지만 만약 B01 클래스 안에 c_a메서드를 저런식으로 재 정의 해서 사용하고 A01에서 다시 b01.c_a() 메서드 호출시 재정의한 B01 안에 c_a 메서드가 호출된다 이걸 오버라이딩이라고 한다.
'학원에서 배운것들 > TEA - E' 카테고리의 다른 글
2017-06-13-E (0) | 2017.06.13 |
---|---|
2017-06-12-E (0) | 2017.06.12 |
2017-05-30-E (0) | 2017.05.31 |
2017-05-29-E (0) | 2017.05.31 |
2017-05-23-E (0) | 2017.05.23 |