Daily coding
Java Basic : day 9 - Inheritance 상속 1 - extends 예약어, 접근제어자, super 본문
Java Basic : day 9 - Inheritance 상속 1 - extends 예약어, 접근제어자, super
sunnnkim 2019. 11. 29. 17:06Inheritance 상속
* 접근제어자 ( 접근지정자 )
1. private
// 부모 클래스의 private 변수는 자식 객체에서 접근이 불가능
2. public
// public 변수는 어디서든 접근이 가능
// main 메소드에서도 접근이 가능하다 (하지만 은닉성이 결여되어 잘 사용하지 않음)
3. protectedN
// protected 제어자는 부모클래스를 상속받은 클래스에서 사용이 가능하다.
// 또한, protected 제어자는 같은 패키지안에서는 상속 관계가 아니어도 사용이 가능하다
// (외부 패키지는 접근 허용 하지 않음)
// 외부에서 접근하고 싶으면 getter/setter 메소드를 사용한다
// main메소드에서는 당연히 사용 및 접근이 불가능하다
부모클래스 예제
class SuperClass{
private String pri_name;
public String pub_name;
protected String pro_name;
public SuperClass() {
//생성자
}
// 부모 메소드
public void Super_Method() {
System.out.println("SuperClass Super_method() 호출");
}
}
상속 방법 : extends 키워드
// java 는 클래스의 다중 상속이 안됨
class ChildClass extends SuperClass{
public ChildClass() {
// 생성자
}
public void Child_func() {
// 부모메소드
System.out.println("Child_func() 호출");
}
Override : 상속받은 함수를 재기입
// 오버라이딩 할 때는 파라미터와 반환값, 함수이름, 접근제어자가 모두 같아야함
// 그렇지 않으면 다른 함수가 되거나 오버로딩이 됨.
super 예약어
// 부모 클래스의 참조값을 의미한다.
public void Super_Method() {
super.Super_Method();
// super. : 부모클래스의 클래스 멤버를 호출
// 이경우에는 SuperClass의 메소드가 먼저 호출된다.
System.out.println("ChildClass Class Super_method() 호출");
}
}
// 메인 메소드
public class Lecture03_Inheritance {
public static void main(String[] args) {
ChildClass cc = new ChildClass();
cc.Super_Method();
// ChildClass에는 메소드가 없어도
// 부모 클래스에 있는 메소드를 상속받아 사용할 수 있다.
// 또한, 모든 클래스는 Object 라는 부모객체를 상속받고 있다
// Object는 따로 extends를 붙여주지 않아도 자동으로 상속한다
cc.Child_func();
// 위의 코드는 자식 객체에 선언된 메소드를 호출한다.
*** 이 경우는 접근이 안됨
: 부모가 자식 객체에 접근하는 경우
SuperClass sc = new SuperClass();
// sc.Child_func();
// 위의 코드는 사용이 불가능 하다
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 9 - Inheritance 상속 3 - Overriding 오버라이딩 (0) | 2019.11.29 |
---|---|
Java Basic : day 9 - Inheritance 상속 2 - super 참조 (0) | 2019.11.29 |
Java Basic : day 9 - Static 스태틱 (0) | 2019.11.29 |
Java Basic : day 9 - Class 은닉화(캡슐화) 복습 (0) | 2019.11.29 |
Java Basic : day 8 - Example 03: 파일 입출력 / 생성 클래스 구현하기 (0) | 2019.11.27 |