[JAVA] 객체지향 - 디폴트 메서드, static 메서드
·
Back-End/Java
[작성일: 2023. 01. 31] 목차 디폴트 메서드, static 메서드인터페이스에 디폴트 메서드, static 메서드 추가 (JDK 1.8부터)인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려움.해결책: 디폴트 메서드(default method)디폴트 메서드는 인스턴스 메서드(인터페이스 원칙 위반, 추상메서드가 아닌 예외상황 발생)interpace MyInterface { void method(); void newMethod(); // 추상메서드 //기존에 있던 인터페이스들이 이 추상메서드가 추가되면서 전부 수정하는 번거로움이 있음.}// ⬇️interface MyInterface { void method(); default void newMethod() {} // 추상메서드가 아니..
[JAVA] 객체지향 - 인터페이스
·
Back-End/Java
[작성일: 2023. 01. 30] 목차 인터페이스(Interface)추상 메서드의 집합(프로그래밍 관점) 구현된 것이 전혀 없는 설계도 껍데기(모든 멤버가 public) ➡️객체를 만들 수 없음.하나의 시스템을 구성하는 두 개의 요소, 또는 두 개의 다른 시스템이 상호 작용을 할 수 있게 하는 접속 경계접속하기 위한 하드웨어, 소프트웨어, 조건, 규약 등을 포괄적으로 가리킴.interface 인터페이스명 { // iv, cv 등 변수는 가질 수 없음. public static final 타입 상수이름 = 값; // 상수 public abstract 메서드명(매개변수 목록); // 추상 메서드({}이 없음.)} // 모든 인터페이스의 멤버는 public만을 가짐.interface PlayingCard..
[JAVA] 객체지향 - 추상클래스, 추상메서드
·
Back-End/Java
[작성일: 2023. 01. 29] 목차 추상 클래스(abstract class)미완성 설계도(부족한 부분이 있음.)미완성 메서드를 갖고 있는 클래스클래스 앞에 abstract를 붙여줘야 함. (추상 메서드가 존재한다고 추론 가능)다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가.코드의 관리에 용이함.상속을 받으며 추상클래스가 구체적이게 됨. (단계별로 관리 가능)abstract class Player { // 추상클래스 abstract void play(int pos); // 추상메서드(몸통{}이 없는 미완성 메서드) abstract void stop(); // 추상메서드}Player p = new Player(); // 에러. 추상클래스의 인스턴스 생성 불가 상속을 통해 추상 메서드를..
[JAVA] 객체지향 - 참조변수의 형변환
·
Back-End/Java
[작성일: 2023. 01. 29] 목차 참조변수의 형변환사용할 수 있는 멤버의 개수를 조절하는 것(값이 달라지는 것이 아님) ➡ 리모콘을 변경하는 것조상 자손 관계의 참조변수는 서로 형변환 가능 멤버의 갯수를 늘리는 형변환은 자동 형변환 되지 않으므로 형변환 생략 불가참조변수가 가리키는 실제 객체가 중요함.class Ex7_7 { public static void main(String[] args) { Car car = null; // 객체가 없어도 형변환에는 문제가 없으나 실행시 에러 // 실제 인스턴스가 무엇인지 중요함 FireEngine fe = new FireEngine(); FireEngine f2 = null; fe.water(); car = fe; car.wate..
[JAVA] 객체지향 - 다형성
·
Back-End/Java
[작성일: 2023. 01. 29] 목차 다형성(Polymorphism)여러 가지 형태를 가질 수 있는 능력조상 타입 참조변수로 자손 타입 객체를 다루는 것자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수는 없음.int i = 10;double d = i;double b = 10.34;int j = b; // (X) 넓은 곳에서 좁은 곳으로 갈 수 없음.INT J = (int)b; // 가능.class Tv { boolean power; int channel; void power() { power = !power; } void channelUp() { ++channel; } void channelDown() { --channel; }}class SmartTv extends Tv { /..
[JAVA] 객체지향 - 오버라이딩
·
Back-End/Java
[작성일: 2023. 01. 28] 목차 오버라이딩(Overriding)상속받은 조상의 메서드를 자신에게 맞게 변경하는 것부모 클래스의 메서드를 자식 클래스가 변경해서 정의하는 것class Point { int x; int y; String getLocation() { return "x: " + x + ", y:" + y; }}class Point3D extends Point { // 상속 int r; String getLocation() { // 오버라이딩 return "x:" + x + ", y:" + y + ",r:" + r; } // 선언부는 변경 불가, 내용(구현부)만 변경 가능}public class OverrideTest { public static ..