-
복습 7일차 - final, 상속프로그래밍 언어/자바(JAVA) 2024. 3. 11. 17:01
지역변수에서는
■ 최초 한번만 변수에 값을 할당가능하다
■ 기본형 매개변수이면 값을 변경할 수 없다 참조형 매개변수일 경우 참조값(메모리 주소)를 변경할 수 없지만 인스턴스의 필드(인스턴스 변수)는 변경할 수 있다)
필드에서는
■ 생성자를 통해서 한번만 초기화될 수 있다
■ static final 로 선언된 변수는 상수라고 부르고 클래스 안에서 자주 필요하는 변하지 않는 값이 필요할때 사용한다(상수로 선언되지 않는다면 각각의 인스턴스에 비효율적인 필드가 계속 생성된다)
■ 상수란 변하지 않고, 항상 일정한 값을 갖는 수를 말한다
클래스에서는
■ 선언된 클래스는 더 이상 확장(상속)될 수 없다
메서드에서는
■ 선언된 메서드는 더 이상 오버라이딩(재정의)될 수 없다
상속
■ 부모 클래스의 속성(필드) 와 기능(메서드)를 자식 클래스가 물려받는것을 말한다
■ 하위 객체를 생성할때 동일한 기능과 속성을 다시 추가할 필요 없이 상속으로 모두 물려받는다는 아주 큰 장점이 있다(유지보수도 편리하다)
□ 자식 클래스는 하나의 부모 클래스만 상속 받을 수 있다 왜냐하면 동일한 필드 또는 메서드를 물려받게 되면 어떤 부모의 것을 사용해야할지 전혀 알 수 없기 때문이다(다이아몬드 문제, 다중상속 문제)
상속과 메모리 구조
ElectricCar electricCar = new ElectricCar();
1. ElectricCar 객체 생성자를 호출하면 부모의 클래스(Car)의 인스턴스까지 함께 포함해서 인스턴스(ElectricCar)를 생성한다
2. 호출하는 변수의 타입(ElectricCar)을 기준으로 인스턴스를 선택하여 필드나 메소드를 호출한다 만약에 호출한 타입의 인스턴스에 없을 경우 부모에서 찾는다
상속과 메서드 오버라이딩
■ 부모에게 상속 받은 기능을 자식이 재정의 하는것을 메서드 오버라이딩이라고 한다
■ 반환 타입은 같아야하고 접근 제어자는 상위 클래스보다 더 제한적이면 안된다
■ ElectricCar 인스턴스에 move() 메서드가 있어 해당 메서드를 실행한다 이때 이미 찾았으므로 부모 타입에서 찾지 않는다
Super
■ 자식 클래스의 생성자에서는 부모 클래스의 생성자를 반드시 호출해야한다
■ 반드시 생성자의 첫줄에 부모의 클래스의 생성자를 호출해야한다 왜냐하면 자식의 인스턴스에 안에는 부모의 인스턴스들이 포함되어 할당되기 때문이다
■ 메서드 오버라이딩되어 있으면 자식에서 부모의 필드나 메서드를 호출할 수 없었지만 super 키워드를 사용해 부모의 필드나 메서드에 접근할 수 있다
'프로그래밍 언어 > 자바(JAVA)' 카테고리의 다른 글
47일차 - 정규표현식 (0) 2024.03.29 복습 6일차 - 자바의 메모리 영역 (0) 2024.03.03 복습 5일차 - 접근제어자, ★캡슐화 (0) 2024.03.03 복습 4일차 - 생성자, 패키지 (0) 2024.03.02 자바 시험 (0) 2024.02.20