24.07.31

윤지현·2024년 7월 31일

TIL

목록 보기
28/75
  • 생성자란?
➡ 객체가 생성될 때 호출되며 객체를 초기화하는 역할
➡ 모든 클래스는 반드시 생성자가 하나 이상 존재
-------------------------------------------------------
public class Car {
		public Car(String model) {} // 생성자 선언
		// 생성자가 한개 이상 선언되었기 때문에 기본 생성자를 추가하지 않음.
}
  • this?
➡ 객체 즉, 인스턴스 자신을 표현하는 키워드
➡ 매개변수명과 객체의 필드명이 동일할 경우
-------------------------------------------------------
public Car(String model, String color, double price) {
    this.model = model;
    this.color = color;
    this.price = price;
}
  • 참조 변수의 타입 변환?
    ➡ 자동 타입 변환, 강제 타입 변환 두 개가 있음
🔻 자동 타입 변환
	- 부모 타입 변수 = 자식 타입 객체
    - 자식 객체는 부모 객체의 멤버를 상속받기 때문에 부모와 동일하게 취급
    - 부모 클래스에 선언된 즉, 상속받은 멤버만 접근
🔻 강제 타입 변환
	- 자식 타입 변수 = (자식 타입) 부모 타입 객체
    - 타입 변환 연산자를 사용하여 강제로 자식 타입으로 변환
    -------------------------------------------------------
// 자식타입객체가 자동 타입변환된 부모타입의 변수
Mammal mammal = new Whale();
mammal.feeding();
// 자식객체 고래의 수영 기능을 사용하고 싶다면
// 다시 자식타입으로 강제 타입변환을 하면된다.
Whale whale = (Whale) mammal;
whale.swimming();
  • 다형성?
➡ 여러 가지 형태를 가질 수 있는 능력
➡ 부모 타이어 변수 = 자식 타이어 객체;를 선언하여 자동 타입 변환된 변수를 사용
-------------------------------------------------------
Tire tire = new HankookTire("HANKOOK");
Tire tire = new KiaTire("KIA");
  • 추상 클래스?
➡ 미완성된 설계도
➡ abstract 키워드를 이용하여 추상 클래스와 추상 메서드 선언
-------------------------------------------------------
public abstract class 추상클래스명 {
		abstract 리턴타입 메서드이름(매개변수, ...);
}
-------------------------------------------------------
➡ 추상 메서드는 extends 키워드를 사용하여 클래스에서 상속
-------------------------------------------------------
public class 클래스명 extends 추상클래스명 {
		@Override
    public 리턴타입 메서드이름(매개변수, ...) {
		       // 실행문
    }
}
  • 인터페이스?
➡ 두 객체를 연결해 주는 다리 역할
➡ 상속 관계가 없는 다른 클래스들이 서로 동일한 행위 즉, 메서드를 구현해야 할 때
➡ interface 키워드를 사용하여 인터페이스를 선언
-------------------------------------------------------
public interface 인터페이스명 { }
-------------------------------------------------------implements 키워드를 사용하여 인터페이스를 구현
-------------------------------------------------------
public class 클래스명 implements 인터페이스명 { 
			// 추상 메서드 오버라이딩
			@Override
	    public 리턴타입 메서드이름(매개변수, ...) {
			       // 실행문
	    }
}
profile
첫 시작

0개의 댓글