목록분류 전체보기 (639)
충분히 쌓여가는
부모 클래스의 모든 메소드가 자식 클래스에게 맞게 설계되어 있다면 가장 이상적이지만, 어떤 메소드는 자식 클래스가 사용하기에 적합하지 않을 수 있다 이러한 메소드는 자식 클래스에서 재정의해서 사용해야 하고 이것을 오버라이딩이라 한다 메소드 오버라이딩 상속된 메소드를 자식 클래스에서 재정의하는 것을 말한다 메소드가 오버라이딩되었다면 해당 부모 메소드는 숨겨지고, 자식 메소드가 우선적으로 사용된다 메소드 오버라이딩 규칙 1. 부모 메소드의 선언부(return 타입, 메소드 이름, 매개변수)와 동일해야 한다 2. 접근 제한을 더 강하게 오버라이딩 할 수 없다(pulbic -> private으로 변경 불가능) 3. 새로운 예외를 throws 할 수 없다 @Override 개발자의 실수를 줄여주기 위해 정확히 오..
현실에서 부모 없는 자식이 있을 수 없듯이 자바에서도 자식 객체를 생성하면 부모 객체가 먼저 생성된 다음에 자식 객체가 생성된다 모든 객체는 생성자를 호출해야 한다 부모 객체도 예외는 아니다, 그렇다면 부모 객체의 생성자는 어디서 호출된 것일까? 부모 생성자는 자식 생성자의 맨 첫 줄에 숨겨져 있는 super()에 의해 호출된다 //자식 생성자 선언 pulbic 자식 클래스(...) { super(); ... } super()은 컴파일 과정에서 자동 추가되는데, 부모의 기본 생성자를 호출한다 만약 부모 클래스에 기본 생성자가 없다면 자식 생성자 선언에서 컴파일 에러가 발생한다 !부모 클래스에 기본 생성자가 없고 매개변수를 갖는 생성자만 있다면 super(매개값, ...) 코드를 직접 넣어야 한다 //자식..
다른 언어와 달리 자바는 다중 상속을 허용하지 않는다 여러 개의 부모 클래스를 상속할 수 없다, 따라서 extends 뒤에는 단 하나의 부모 클래스만 와야한다 잘못된 예 public class 자식 클래스 extends 부모클래스1, 부모클래스2 { } 정상 예 public class 자식 클래스 extends 부모클래스1 { }
애플리케이션 전체에서 단 한개의 객체만 생성해서 사용하고 싶다면 싱글톤 Singleton 패턴을 적용할 수 있다 싱글톤 패턴의 핵심 생성자를 private 접근 제한해서 외부에서 new 연산자로 생성자를 호출할 수 없도록 막는 것 private 클래스() {} 생성자를 호출할 수 없으니 외부에서 마음대로 객체를 생성하는 것이 불가능해진다 대신 싱글톤 패턴일 제공하는 정적 메소드를 통해 간접적으로 객체를 얻을 수 있다 public class 클래스 { //private 접근 권한을 갖는 정적 필드 선언과 초기화 private static 클래스 singleton = new 클래스(); //1 //private 접근 권한을 갖는 생성자 선언 private 클래스() {} //public 접근 권한을 갖는 정..