본문 바로가기

학습 기록 (Learning Logs)/자바

(68)
[Chap12] - 01 추상클래스 맨 앞에 abstract 붙는다 추상 메서드==미완성 메서드가 1개 이상이면 추상 클래스다 모든 접근 지정자가 public 모든 메서드가 추상(abstract) 메서드 여야 한다 모든 필드가 static final 미완성 -> 완성으로 구현한다 ==> 구현하다 완성 -> 완성 => 오버라이딩 완성과 미완성의 구분이 뭐냐? 중괄호가 있으냐이다. 각자 오버라이딩 된 함수가 나온다 Animal 클래스 --> 추상 클래스로 만들자! 자식 클래스는 cry 함수를 반드시 오버라이딩 한다. int a; 는 오류가 난다. stack 메모리에는 값을 초기화 해줘야한다 class A{ int a; } 는 오류 안난다. Heap 메모리에서 자동으로 초기화로 0을 대입해주기 때문이다. 추상클래스는 붕어빵 기계 부품이다 추상 ..
[Chap11] - 자바 제어자 #2 (final, abstract) final final은 바꿀 수 없다 ! abstract 부모에서 적을 내용이 없을떄 그 떄 사용한다. 이름을 틀리지 않게 해준다.
chap[10-5] super와 super() super와 super() Super 는 부모꺼다!!!!!! This는 클래스 자신의 객체 Super 부모의 객체 왼쪽에는 abc()함수가 두개다. 부모꺼, 자식꺼 왼쪽 -> This는 자식에서 썼으니까 자기자신의 abc()를 부른다 오른쪽 -> super 부모꺼 가져옴. This 는 늘 생략되어있었다(컴파일러가 붙여줬었음) super.init() ==> 부모꺼 코드 100줄 가져옴 부모가 가지고 있는 코드에 새로운 코드 한 줄만 추가하고 싶어 This ==> 자신의 생성자를 호출 Super ==> 부모 클래스의 생성자를 호출 성질 Super는 생성자 내부에서 사용 가능!!! 첫 줄에 위치 자식클래스 생성자의 첫 줄에는 this(), super()가 포함 생성자가 여러 개 일 때 어떻게 다른 생성자를 부..
chap[10-4] 필드와 static 멤버 (필드_메서드)의 중복 static은 이미 먼저 생긴다. 메소드와 달리 각 객체마다 static 필드, 메서드는 중복된 채로 존재한다. 1. 필드 왼쪽이 부모로 선언... 부모값 접근 가능 왼쪽이 중요! 왼쪽에 자식으로 선언 자식 값인 4가 출력된다. 왼쪽이 중요! 왼쪽은 부모이다. 생성은 자식으로 되어있어도. ... 부모꺼로 접근 부모꺼로 출력한다 // 3 왼쪽이 중요하다!!!!!!!!!!! 어떤 타입으로 선언하느냐가 중요하다 분리해서 저장하기 때문에 오버라이딩이 되지 않는다 2. static 필드 초록색 동그라미 안에는 4개의 영역이 존재한다. Class영역 Static 영역 Method 영역 상수 영역 static은 static영역에서 공용으로 사용한다. static영역에서 객체 안에 각각 static m이 각각 살아있다..
chap[10-3] 메서드 오버라이딩 상속을 했을 때만 나타난다 부모한테 받은 것을 수정한다 오버 라이딩! == 덮어쓰기 메서드 빨간색이 덮어씀 B클래스를 부른다 A클래스를 부른다 오버라이딩 : 완전히 똑같아서 덮어씀 오버로딩 이름은 같지만 서로 다르게 인식 시그니처가 다르다(리턴 타입, 메서드 이름, 매개변수) 접근지정자도 상속에 영향을 준다 부모보다 크거나 같아야 한다. 접근지정자가 작으면 사용할 수 없다.
chap[10-2] 객체의 타입변환 업캐스팅 : 자식이 부모 타입으로 ! ---> 항상 가능 --> 컴파일러가 해준다 다운캐스팅: 부모가 자식타입으로 ! ---> 안될때 있음 --> 수동으로 업캐스팅 자식 --> 부모로 컴파일러가 매번 붙여서 오류가 안난거다 A a = (A) new B(); 다운캐스팅 부모-> 자식으로 메모리로 이해하는 다운캐스팅 --> 맨 마지막 안됨 왼쪽은 자식타입 = 부모타임 이렇게 하니까 안됨 오른쪽은 C가 없음 선언한 타입의 멤버만 사용가능하다. 위에는 B로 선언해서 B의 값에 접근한다 아래에는 A로 선언해서 B의 값에 접근 못한다. ==> 왼쪽이 중요하다 첫번째는 E E의 값만 접근 가능 //3, E클래스 두번째는 F F 값 접근 가능, E값 접근 가능 다형성 타입 왼쪽은 부모 = 오른쪽은 자식 자식값 접근 안..
[Ch10] 클래스의 상속 화살표 방향으로 성립한다 UML 대학생과 직장인의 공통점 사람이기 때문 배열의 특징 같은 타입만 배열 값으로 넣을 수 있다 타입을 과일로 하나로 선언! 그러면 하위에 마음대로 객체를 선언할 수 있다. 상속을 사용하는 이유 1) 다형성 상속하는 방법은 extends를 쓰면 된다. 다중상속을 불가능하다. 부모는 하나다! 코드로 만들어보기 부모 클래스 만들기 => 사람 == Human 자식 클래스 => 대학생, 직장인 == Student, Worker B b = new B (); 부모객체가 먼저 생성된다. 1) 힙메모리에 A객체를 만든다 -> m, abc() 2) 힙메모리에 B객체를 만든다 -> n, bcd() 3) B객체를 가리킨다 배속에 들어올 수 있는 것 필드 메서드 생성자 클래스 ==> 생성자는 상속되..
[Ch09] 접근지정자 접근지정자에는 4가지가 있다. public, protected, default, private public은 동일 패키지의 모든 클래스, 다른 패키지의 모든 클래스에서 사용가능하다. private는 동일 클래스에서 사용 가능하다.