[Java] 기초8 (클래스, 상속)

sua_ahn·2023년 1월 3일
0

Java

목록 보기
11/15
post-thumbnail

Class 클래스

: 객체의 틀

구성 요소

→ 생략 혹은 복수 개 작성 가능

1. Field 필드

: 객체의 속성 데이터 저장 (클래스 영역에서 선언되는 변수)
→ 기본값으로 자동 초기화

  변수 참고

2. Constructor 생성자

: new 연산자로 객체 생성 시, 자동 호출되어 객체 초기화 (별도의 호출 불가)

  • 메소드와 비슷한 형태이지만, 반환 타입이 없고 클래스명과 동일
  • 오버로딩 가능
  • 기본 생성자 : 매개변수가 없는 형태 클래스명()
    → 따로 생성자를 명시해주지 않았을 때, 비어있는 기본 생성자가 생략되어 있다고 봄

Constructor 자동생성 방법
Source메뉴 → "Generate Constructor using Fields" → Fields 선택 → Generate

3. Method 메소드

: 객체의 동작

cf) 필드와 메소드를 클래스의 멤버라고도 함

자세한 내용은 아래 포스팅 참고!
>> [Java] 기초6 (함수, 메소드)


상속 Inheritance

: 변수와 메소드의 재사용

→ Parent(super) class가 Child class에게 변수와 메소드를 상속할 수 있음

cf) Java는 다중상속 불가 (즉, 부모 클래스를 하나만 가질 수 있음)

Override 오버라이드

: 상속받은 메소드를 재정의

@Override annotation을 붙여 실수 방지

this 키워드

: 객체 자신 지칭 (자기 참조)

  • this 참조변수
    → 메소드 내 변수(로컬변수, 매개변수)와 멤버변수의 이름 중복 시,
    메소드 내 변수가 우선순위를 가짐
    ⇒ 멤버변수 앞에 this.을 붙여서 멤버변수 사용 가능
  • this() 생성자
    → 생성자 내 또 다른 생성자 호출 가능

super 키워드

: 부모객체 참조

  • super 참조변수
    → 부모클래스 멤버변수 접근

  • super() 생성자
    → 부모클래스 생성자 호출

    • 자식 객체 생성 시, 부모클래스의 기본 생성자가 자동 호출된 후 자식클래스의 생성자 호출됨
      → 부모클래스에 기본 생성자가 없을 시, 자식 생성자에 부모의 다른 생성자 명시해줘야함

public static MainClass {
	public static void main(String args[]) {
    
        ChildClass cc1 = new ChildClass();	// 출력: Parent -> Child
        ChildClass cc2 = new ChildClass(3);	// i = 3
		
    }
}

public class ParentClass {
	// 필드, 멤버 변수
	int i;
    
    // 기본 생성자
    public ParentClass() {
    	System.out.println("Parent");
    }
    // 생성자
	public ParentClass(int i) {
    	this.i = i;
    }
    
    public void method() {
    	System.out.println("Parent method()");
    }
}

public class ChildClass extends ParentClass {
	
    // 기본 생성자
    public ChildClass() {	
    	// super(); 자동 호출
        System.out.println("Child");
    }
    // 생성자
    public ChildClass(int j) {
    	super(j);
    }
    
    @Override
    public void method() {
    	super.method();
    	System.out.println("Child method()");
    }
}
profile
해보자구

0개의 댓글