본문 바로가기

java/자바

(68)
[java] 생성자 https://niceman.tistory.com/143 에서 팩토리 메소드 패턴을 조사하는데 아니... 생성자가 없는데 객체를 생성하는거야... 생성자가 없어도 객체가 만들어지는거야?? 생성자: new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다. 생성자를 실행시키지 않고는 클래스로부터 객체를 만들 수 없다. new 연산자에 의해 생성자가 성공적으로 실행되면 heap 영역에서 객체가 생성되고 객체의 주소가 리턴된다. 리턴된 객체의 주소는 클래스 타입 변수에 저장되어 객체에 접근할 때 이용된다. 생성자가 성공적으로 실행되지 않고 에러가 발생하면 객체는 생성되지 않는다. 기본 생성자 모든 클래스는 생성자가 반드시 존재하며, 하나 이상을 가질 수 있다. 클래스 내부..
[java] final 1. final final : 해당 선언이 최종 상태. 결코 수정될 수 없다. final 클래스 final 필드 final 메소드 상속 관련 있음 상속을 못하게 됨 초기값 설정 후 더 이상 값을 변경할 수 없다. 상속 관련 있음 오버라이딩 못하게 됨 2. final class 최종적인 클래스 == 상속할 수 없는 class 부모 클래스가 될 수 없어서, 자식 클래스를 만들 수 없다. public final class Member { ......... } public class 자식클래스이름 extend Member { // Member는 부모가 될 수 없음 .... } 3. final method 최종적인 메소드 == 오버라이딩 안됨 부모 클래스를 상속 받은 자식 클래스에서 final로 된 메소드는 재정..
[java] 상속 상속 부모가 자식에게 물려주는 행위 부모 클래스가 자식 클래스에게 물려줄 수 있다. 무엇을? 멤버, 메소드 부모 클래스의 모든 필드, 모든 메소드 들을 물려 받지 않는다. 못 받는 것도 있다. 어떻게? 부모 클래스에서 priavate로 접근 제한을 갖는 필드, 메소드는 상속 대상에서 제외된다. 자식이 부모를 선택한다. 자식 클래스를 선언할 때 어떤 부모를 상속받을 건지 결정한다. class 자식클래스이름 extends 부모클래스이름 { //필드 //생성자 //메소드 }
[java] super, this 1. super가 뭐지? 자식 클래스에서 부모 클래스의 메소드를 오버라이딩하면 부모 클래스의 메소드는 숨겨짐, 자식 메소드만 사용됨 그런데 숨겨진 부모 메소드가 쓰고 싶다면? 그럴땐 super 키워드를 붙여서 부모 메소드를 호출한다. super.부모메소드이름( ); super는 부모 객체를 참조하고 있기 때문에 부모 메소드에 직접 접근할 수 있다. public class Airplane{ public void land(){ System.out.println("착륙합니다"); } public void fly(){ System.out.println("일반 비행"); } public void takeOff(){ System.out.println("이륙합니다"); } } 부모 클래스 Airplane public..