[자바의 정석] - 인터페이스(interface)
·
📝 끄적끄적/🖥️ 자바의 정석
인터페이스(interface) 인터페이스를 이해하려면 추상화, 다형성에 대한 이해가 필수적이다. ❓인터페이스란 ⭐ 추상 메서드의 집합 핵심 구현된 것이 전혀 없는 설계도, 껍데기(모든 멤버가 public) interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수목록); } 인터페이스는 변수를 가질 수 없다. 무조건 상수만 가질 수 있다. 메서드는 전부 다 추상메서드 = 추상메서드의 집합 interface PlayingCared { public static final int SPACE = 4; final int DIAMOND = 3; //public static final int DIAMOND = 3; static int..
[자바의 정석] - 다형성
·
📝 끄적끄적/🖥️ 자바의 정석
다형성 객체지향에서 제일 중요한 개념이다. 다형성을 이해 못 하면 추상클래스, 인터페이스 이해를 못 할 것이다. 여러 가지 형태를 가질 수 있는 능력 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 class SmartTv extends Tv {} Tv t = new SmartTv(); //타입 불일치. ❓ 객체와 참조변수의 타입이 일치할 때와 일치하지 않을 때의 차이 가정 `Tv` 클래스의 멤버(참조변수, 메서드): 5개 `SmartTv` 클래스의 멤버(참조변수, 메서드): 7개 `SmartTv s = new SmartTv();` 타입이 일치할 때는 멤버 7개를 다 사용할 수 있다. `Tv t = new SmartTv();` 일치하지 않을 때는 멤버 5개만 사용할 수 있다. 자손 타입의 참조변수로 ..
[자바의 정석] - 추상 클래스와 추상메서드
·
📝 끄적끄적/🖥️ 자바의 정석
추상클래스, 추상 메서드 미완성(부족한) 설계도 미완성 메서드를 갖고 있는 클래스 abstract class Player { //추상클래스(미완성 클래스) abstract void play(int pos); //추상메서드(몸통{}이 없는 미완성 메서드) abstract void stop(); //추상메서드 } 다른 클래스 작성에 도움을 주기 위한 것이다. 인스턴스 생성이 불가능하다. Player p = new Player(); //에러. 추상 클래스의 인스턴스 생성 불가 상속을 통해 추상 메서드를 완성해야 인스턴스 생성이 가능하다. class AudioPlayer extends Player { void play(int pos); { /* 생략 */} void stop(); { /* 생략 */} } Aud..
[자바의 정석] 참조변수의 형변환, instanceof 연산자
·
📝 끄적끄적/🖥️ 자바의 정석
참조변수의 형변환사용할 수 있는 멤버(멤버 변수, 메서드)의 갯수를 조절하는 것이거 외에는 아무것도 없다!!주소값이나 객체? 절대 안바뀐다. 조상 자손 관계일때만 참조변수 서로 형변환 가능(형제X)class Car {}class FireEngine extends Car {}FireEngine f = new FireEngine();Car c = (Car)f; //조상인 Car타입으로 형변환(생략가능) 예제class CastingTest1 { public static void main(String args[]) { Car car = null; FireEngine fe = new FireEngine(); FireEngine fe2 = null; fe.water(); car = fe; // car..
[자바의 정석] 제어자, 캡슐화
·
📝 끄적끄적/🖥️ 자바의 정석
제어자(modifier) 영어로 따지면 형용사다. 클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여 접근 제어자 public, protected, (default), private default는 아무것도 아님. 그 외 static, fina, abstract, synchronized, volatile, strictfp …. 하나의 대상에 여러 제어자를 같이 사용 가능하다.(접근 제어자는 하나만) public class ModifierTest { public static final int WIDTH = 200; } static - 클래스의, 공통적인 final - 마지막의, 변경될 수 없는 final class FinalTest { //조상이 될 수 없는 클래스 final int MAX_..
[자바의 정석] 상속, 참조변수 super, 생성자 super()
·
📝 끄적끄적/🖥️ 자바의 정석
상속기존의 클래스로 새로운 클래스를 작성하는 것(코드의 재사용)두 클래스를 부모와 자식으로 관계를 맺어주는 것class Car {}class FireEngine extends Car {}자손은 조상의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외)왜 자손과 조상이라는 단어를 사용했느냐?부모의 부모도 있을 수 있다. 바로 위에 부모것만 상속받는 게 아니기 때문이다.자손의 멤버 개수는 조상보다 적을 수 없다.(같거나 많다.)자손의 변경은 조상에 영향을 미치지 않는다.자식 클래스의 변경이 있어도 조상에 영향이 가지 않는다.class Tv { boolean power; // 전원상태(on/off) int channel; // 채널 void power() { power = !power; } ..