Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- jquery dom 계층 선택자
- parseInt()
- 조합 재귀
- java Collections.sort()
- Java
- str to char array
- 알고리즘
- 자바입출력
- Interface
- inner class
- jquery 이벤트 처리
- jquery 필터선택자
- 자바 조합 재귀
- 자바 재귀 조합
- java lambda
- 자바
- 상속
- 순열 재귀
- 자바스크립트 이벤트처리
- java 내부 클래스
- 자바스크립트 이벤트중지
- 재귀함수
- 서로소
- 순열코드
- 재귀
- 후위표기
- char to str
- 자바 순열 코드
- 알고리즘 그래프
- jquery 속성선택자
Archives
- Today
- Total
유블로그
[Java] 상속과 접근제한자 본문
- class A extends B : A(자식)가 B(부모)를 상속받는다.
- 하나의 부모는 여러 자식을 가질 수 있고, 부모는 또 다른 자식이 될 수도 있다.
- extends를 명시하지 않을 경우 자동으로 extends java.lang.object 가 부모로 설정됨
- 한 개의 class만 extends 가능하다.
- 다중 상속 대신 interface 기능을 활용할 수 있다. (implements 는 다중 가능)
- 상속을 해도 접근제한자가 우선적으로 적용된다. 예로 들어 부모 variables 가 private 인데 자식이 super.variable 이렇게 접근할 수 없다는 것.
- 클래스 호출 시 무조건 부모 클래스 먼저 호출 하고 자식 클래스 호출됨
자식 클래스 생성자 첫 줄에 super(); 안해주면 자동으로 super() 호출됨.
이 때 this(); 해주면 자식 클래스의 디폴트 생성자 호출에서 super() 한다.
class A{
int a, b;
public A() {}
public A(int a; int b){
this.a = a;
this.b = b;
}
public void setA(int a) {
this.a = a;
}
public void setB(int b) {
this.b = b;
}
}
class B extends A {
int c;
B(int a, int b, int c){
super(a, b);
// 밑 두 줄이 위 super(a, b)와 같음. super()는 무조건 생성자 첫 줄에 나와야 함.
// super.setA(a);
// super.setB(b);
this.c = c;
}
}
< 접근제한자 >
public > protected > default > private
public : 어떤 클래스든 사용 가능(다른 패키지도 가능)
protected : 같은 패키지 안에서 접근 가능, 다른 패키지에서는 상속 관계에서만 접근 가능
default : 같은 패키지 안에서 접근 가능
private : 자신 클래스만 사용 가능
package a;
public class AAA {
protected int a = 100;
}
package b;
import a.*;
public class Test extends AAA {
Test(){
System.out.println(a); // 다른 패키지라도 protected는 변수이름으로 접근 가능
}
public static void main(String[] args) {
AAA aaa = new AAA();
// System.out.println(aaa.a); // 오류남...
// System.out.println(a); // 이것도 static 때문에 불가능
}
}
- 부모 클래스에 생성자가 없으면 자식 클래스에서 오류남
- super()로 부모 class 생성자를 호출할 때는 항상 첫번째 라인에 와야 한다. (부모 먼저 생성)
+ final class : 자식 클래스를 만들지 않고 싶을 때 사용
'Java' 카테고리의 다른 글
[Java] Interface - 추상화 (0) | 2020.08.10 |
---|---|
[Java] 다형성, 상속 (0) | 2020.08.10 |
[Java] 입출력 처리 - Scanner, BufferedReader (0) | 2020.08.10 |
[Java] StringBuilder 사용법 (0) | 2020.07.29 |
[Java] Singleton(싱글톤) 객체 만들고 이용하기 (0) | 2020.07.25 |