목록이것이 자바다 (12)
ultra_dev
☑️ 인터페이스 :접속기, 객체를 연결하는 역할 객체 A - 인터페이스 - 객체 B 객체 A가 인터페이스 메소드 호출 시, 인터페이스는 객체B의 메소드 호출하고 그 결과를 객체A에게 전달 → 왜 바로 객체B의 것을 호출하지 않고 번거롭게 인터페이스를 거칠까 → 만약 객체 B가 객체 C로 교체된다고 가정 시, 객체 A는 객체B가 C로 교체되든말든 상관 안함 관심사는 인터페이스의 메소드일뿐.. 만약 인터페이스 없이 객체B의 것을 직접 사용했다면 객체A는 소스코드를 객체B에서 객체C로 변경하는 번거로운 작업을 거쳐야 했겠지만 인터페이스를 사용하면 그럴 필요가 없음 .java 소스파일로 작성되고, .class 형태로 컴파일 되기 때문에 물리적 형태는 클래스와 동일 접근 제한자 interface 인터페이스명 {...
☑️ 클래스 타입 변환 :클래스의 타입 변환은 상속 관계에 있는 클래스 사이에서 발생한다. 📋자동타입변환 부모타입 변수 = 자식타입객체; -> 자식 타입 객체가 부모 타입으로 자동타입변환 이루어짐 만약 Cat이 Animal 상속 시, Cat cat = new Cat(); Animal animal = cat; 또는 Animal animal = new cat(); -> cat과 animal 변수는 타입만 다를뿐 동일한 cat 객체 참조 cat == animal → 바로 위 부모가 아니더라도 상속 계층에서 상위타입이라면 자동타입 변환이 일어남 → 부모 타입으로 자동 변환된 이후에는 부모 클래스에 선언된 필드와 메소드만 접근 가능 비록 변수는 자식 객체 참조하지만 접근 가능한 멤버는 부모 클래스 멤버로 한정! ..
☑️ 상속 : 잘 개발된 클래스를 재사용하여 중복되는 코드를 줄여줌, 부모 클래스를 수정하면 모든 자식 클래스에 수정효과를 가져옴 ☑️ 자바는 다중 상속을 허용하지 않는다. 따라서 extends 뒤에는 단 하나의 부모 클래스만이 와야 한다. ☑️ 자식객체를 생성하면 부모 객체가 먼저 생성된 다음에 자식 객체가 생성된다. → 모든 객체는 생성자를 호출해야만 생성되는데 부모 객체의 생성자는 어디 있을까? → 자식 생성자의 맨 첫줄에 숨겨져 있는 super()에 의해 호출 된다. public class SmartPhone extends Phone{ //자식 생성자 선언 public SmartPhone(String model, String color){ super(); X a.field = "value"; ->..
CH 6 - 2(클래스) ☑️ 인스턴스 멤버 인스턴스 멤버 : 객체에 소속된 멤버 ( 객체가 있어야 사용 가능) ↔정적(static) 멤버 : 클래스에 고정된 멤버(객체 없이도 사용 가능) 메소드를 객체마다 저장하면 중복 저장으로 메모리 효율이 떨어짐 → 따라서 메소드는 메소드 영역에 둬서 공유해서 사용하되, 객체 없이 사용 못하도록 제한을 걸어둔 것 ☑️ this 객체는 자신을 this라고 함. 생성자와 메소드의 매개변수명이 인스턴스 멤버인 필드명과 동일한 경우, 인스턴스 필드임을 강조하기 위해 this를 주로 사용 ☑️ 정적(static) 멤버 메소드 영역의 클래스에 고정적으로 위치하는 멤버 객체를 생성할 필요 없이 클래스 통해 바로 사용 가능 선언 하기 위해서는 앞에 static 붙히면 됨 객체마다..