Back_End/Java
상속과 인터페이스
BaekSJ
2024. 4. 22. 16:15
상속 / 다형(유형)성 / 추상
- 상속 : 부모(super) 으로부터 물려받은 자원을 자식이 그대로 사용하거나 수정해서 사용 가능 키워드 : extends Java 는 한번에 하나의 클래스만 상속 가능
예)
public class ParentClass{
int a=10;
}
public class ParentClass2{
}
가능
public class ChildClass extends ParentClass{
char c='A'; / private char c='A'
}
불가능
public class ChildClass extends ParentClass, ParentClass2{
}
가능
public class ChildClass2 extends ChildClass{
// int a=10; char c='A'; 클래스를 물려받는게 아닌 그 자원을 물려 받는 것
// private char c='A' 를 썼을 경우 char c='A' 물려받기 불가능
// 생성자는 물려 받지 못하고 이를 제외한 나머지를 물려받는 것
}
public class ParentClass2{
public void test(){ }
}
public class ChildClass3 extends ParentClass2{
// public void test(){ } // 물려 받은 메서드를 그대로 받을 수도 있고,
public void test(){
/ System.out.print(); // 물려 받은 메서드 내부를 수정하는 것도 가능.
// 부모로부터 물려받은 메서드 내용을 수정하는 기법 : Override
}
}
접근 제한자 : 외부 클래스가 현재 내 클래스 내부의 자원을 접근할 수 있는 범위를 설정 자원 : 변수 / 생성자 / method...
1. public : 가장 넓은 범위 -> 패키지가 다르더라고 import 하면 사용가능
2. default : 동일 패키지 내부에서만
3. protected : 자식까지
4. private : 내 클래스 내에서만...
💡상속의 사용 시기는 언제일까?
- 메모리 효율을 위해 상속을 사용, 동일 코드를 다시 개발하기 싫을 때!
상속 순서
예) public class ParentClass{ // ParentClass.class
input a=10;
public ParentClass(){
}
}
new ParentClass()
public class ChildClass extends ParentClass{ // ChildClass
private char='A';
public ChildClass();
}
}
interface : 코드의 유연성(주로 객체저장) / 메서드에 대한 다형성
1. interface 클래스 선언 방법
public interface 클래스명{
}
2. interface 클래스 구성
상수 선언 // int a=10; <> final int a=10;
메서드명만 선언 // public void sum(); <> public abstract void sum();
변수 선언 x
생성자 x
--> 단독적으로 사용하는 것이 아니라, 다른 클래스에 의해 구현되어 사용한다
객체 생성불가!!!
예)
public interface A{
}
public interface B{
}
public interface C{
}
public class Test implements A{
}
public class Test implements A, B, C{
}
interface 끼리는 다중 선언 가능
public interface D extends A, B, C{
}
클래스의 구성요소
1. 일반 클래스
일반클래스 구성요소
1. 변수
2. 상수
3. 생성자
4. 메서드
추상메서드 선언 불가능!!! public void sum();
2. 추상 클래스
추상클래스 구성요소
1. 변수
2. 상수
3. 생성자 : new ~~(); 단독 객체 생성은 불가!!!
4. 메서드
5. 추상메서드 선언 가능!! public void sum();
=> 추상클래스 = 일반클래스 + interface
추상클래스 선언 : abstract 키워드가 필요