Java 73

다형성

다형성은 상속과 깊은 관계가 있음. 여러가지 형태를 가지는 것을 의미하며, 참조변수 하나로 여러 타입의 객체를 참조하도록 한다. class TV { boolean power; // 전원 int channel; // 채널 void power() { power = !power; } void channelUp() { ++channel; } void channelDown() { --channel; } } class CaptionTV extends TV { String text; void caption() { ... } } TV와 CaptionTV 클래스가 서로 상속 관계에 있을 경우, 다음과 같이 parent 클래스의 참조변수로 child 클래스의 인스턴스를 참조가 가능하다. TV t = new TV(); Ca..

Java/정석 2022.06.01

오버라이딩

child 클래스를 필요에 의해 변경해야 하는 경우 parent 클래스를 오버라이딩한다. class Point { int x; int y; String getLocation() { return "x: " + x + ", y: " + y; } } class Point3D extends Point { int z; String getLocation() // 오버라이딩 { return "x: " + x + ", y: " + y + ", z: " + z; } } 조건 chlid 클래스에서 오버라이딩 하는 메서드는 조상 클래스의 메서드와 1. 이름이 같아야 한다. 2. 매개변수가 같아야 한다. 3. 반환타입이 같아야 한다. 오버로딩 vs 오버라이딩 오버로딩 기존에 없는 새로운 메서드를 추가 (NEW) 오버라이딩 조..

Java/정석 2022.06.01

싱글톤 패턴

CarClass이라는 객체가 있다. public class CarClass 어떻게 해야 Car 객체의 인스턴스가 하나만 존재하도록 할 수 있을까? private CarClass() { } // 생성자가 private면 아무도 이 객체를 생성할 수 없는데.. 그렇다면 자신을 멤버로 선언해서 메모리에 올려놓자 (static) private static CarClass car new CarClass(); // 이렇게 해도 멤버로 선언된 CarClass 역시 private이다. 외부에서 멤버로 선언된 car을 가져올 수 있는 메서드를 생성하면 된다! public static CarClass getInstance() { return car; } // 이렇게 하면 getInstance 메서드 외에는 CarClass..

Java 2022.05.30

싱글톤 패턴

싱글톤 패턴이란? 프로그램에서 인스턴스가 한 개만 생성되어야 할 때 사용하는 디자인 패턴 static 변수, 메서드 이용해 구현 싱글톤 패턴으로 회사 객체 구현하기 Company@5ca881b5 Company@5ca881b5 public class Company { // 클래스 내부에 유일한 private 인스턴스 생성 private static Company instance = new Company(); // 생성자는 private로 선언 private Company() { } // 외부에서 유일한 인스턴스를 참조할 수 있는 public 메소드 제공 public static Company getInstance() { if(instance == null) { instance = new Company();..

static 변수, static 메소드

static 변수 사원이 입사할 때마다 1씩 증가하는 사번을 주는 식 이가가님의 사번은 1001입니다. 김가가님의 사번은 1002입니다. public class Employee { // 공통 변수 public static int serialNum = 1000; private int employeeId; private String employeeName; private String department; // 값을 "각자" 가지게 한다 public Employee() { serialNum++; employeeId = serialNum; // employeeId 또한 매번 증가한다++ } public int getEmployeeId() { return employeeId; } public void setEmp..