전체 글 110

[JAVA] 인터페이스

인터페이스의 역할 📌인터페이스 인터페이스는 두 객체를 연결해주는 다리 역할을 해줍니다. 사람과 삼성티비, 엘지티비 객체가 존재한다고 생각해 보겠습니다. 사람 객체는 멀티 리모컨 인터페이스를 통해서 삼성티비 객체의 채널을 변경할 수 있습니다. 이때 삼성티비가 아니라 엘지티비로 객체가 교체된다고 해도 채널을 변경할 수 있습니다. 상속 관계가 없는 다른 클래스들이 서로 동일한 행위 즉, 메서드를 구현해야할 때 인터페이스는 구현 클래스들의 동일한 사용 방법과 행위를 보장해 줄 수 있습니다. 인터페이스는 스팩이 정의된 메서드들의 집합입니다. 인터페이스의 구현 클래스들은 반드시 정의된 메서드들을 구현해야합니다. 따라서 구현 클래스들의 동일한 사용 방법과 행위를 보장해 줄 수 있습니다. 이러한 특징은 인터페이스에 다..

JAVA 2023.06.01

[JAVA] 추상 클래스

추상 클래스란 📌 클래스가 설계도라면 추상 클래스는 미완성된 설계도입니다. abstract 키워드를 사용하여 추상 클래스를 선언할 수 있습니다. public abstract class 추상클래스명 { } 추상 클래스는 추상 메서드를 포함할 수 있습니다. 추상 메서드가 없어도 추상 클래스로 선언할 수 있습니다. 추상 클래스는 자식 클래스에 상속되어 자식 클래스에 의해서만 완성될 수 있습니다. 추상 클래스는 여러개의 자식 클래스들에서 공통적인 필드나 메서드를 추출해서 만들 수 있습니다. ※ 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우 사용한다. 추상 메서드 📌 추상 메서드는 아직 구현되지 않은 미완성된 메서드입니다. abstract 키워드를 사용하여 추상 메서드를 선언할 수 있습니다. publ..

JAVA 2023.06.01

[JAVA] instanceof

📌 다형성 기능으로 인해 해당 클래스 객체의 원래 클래스명을 체크하는것이 필요한데 이때 사용할 수 있는 명령어가 instance of 입니다. 참조변수의 형변환 가능여부 확인해 사용. 가능하면 true 반환 형변환 전에 반드시 instanceof로 확인해야한다. 이 명령어를 통해서 해당 객체가 내가 의도하는 클래스의 객체인지 확인할 수 있습니다. {대상 객체} instance of {클래스 이름} 와 같은 형태로 사용하면 응답값은 boolean 입니다. instanceof연산자는 형변환이 가능한지 확인하는대에 사용한다. 형변환이 가능하면 true를 반환한다. 형변환을 하기 전에는 반드시 instanceof 연산자로 확인하고 형변환 해야한다. // 다형성 class Parent { } class Child..

JAVA 2023.06.01

[JAVA] 다형성 (polymorphism)

여러 가지 형태를 가질 수 있는 능력 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 📌 다형성이란 ‘여러 가지 형태를 가질 수 있는 능력’을 의미합니다. 예를 들어 자동차의 핸들을 교체하면 핸들링이 부드러워지고 바퀴를 교체하면 승차감이 좋아집니다. 소프트웨어 또한 구성하고 있는 객체를 바꿨을 때 소프트웨어의 실행 성능 및 결과물이 다르게 나올 수 있습니다. 참조변수 타입변환을 활용해서 다형성을 구현할 수 있습니다. Tire tire = new HankookTire("HANKOOK"); Tire tire = new KiaTire("KIA"); 부모타이어 변수 = 자식타이어객체; 를 선언하여 자동 타입변환된 변수를 사용하여 각각의 자식타이어 객체에 재정의 된 메서드를 통해 다양한 승차감을 가진 자동차를..

JAVA 2023.06.01

[JAVA] 참조변수의 타입변환

자동 타입 변환 📌 부모타입 변수 = 자식타입객체; 는 자동으로 부모타입으로 변환이 일어납니다. 자식 객체는 부모 객체의 멤버를 상속받기 때문에 부모와 동일하게 취급될 수 있습니다. 예를 들어 포유류 클래스를 상속받은 고래 클래스가 있다면 포유류 고래 = 고래객체; 가 성립될 수 있습니다. 왜냐하면 고래 객체는 포유류의 특징인 모유수유 행위를 가지고 있기 때문입니다. 다만 주의할 점은 부모타입 변수로 자식객체의 멤버에 접근할 때는 부모 클래스에 선언된 즉, 상속받은 멤버만 접근할 수 있습니다. 예제 코드 Mammal 부모 클래스 class Mammal { // 포유류는 새끼를 낳고 모유수유를 한다. public void feeding() { System.out.println("모유수유를 합니다."); }..

JAVA 2023.06.01

[JAVA] super 및 super()

super 📌 super는 부모 클래스의 멤버를 참조할 수 있는 키워드이다. 객체 내부 생성자 및 메서드에서 부모 클래스의 멤버에 접근하기 위해 사용될 수 있다. 자식 클래스 내부에서 선언한 멤버와 부모 클래스에서 상속받은 멤버와 이름이 같을 경우 이를 구분하기 위해서 사용된다. 부모 클래스 // 부모 클래스 Car String model; // 자동차 모델 String color; // 자동차 색상 double price; // 자동차 가격 자식 클래스 // 자식 클래스 SportsCar String model = "Ferrari"; // 자동차 모델 String color = "Red"; // 자동차 색상 double price = 300000000; // 자동차 가격 자식 클래스의 메서드 publi..

JAVA 2023.06.01

[JAVA] 오버라이딩

📌 부모 클래스로부터 상속받은 메서드의 내용을 재정의 하는 것을 오버라이딩이라고 한다. 부모 클래스의 메서드를 그대로 사용 가능하지만 자식 클래스의 상황에 맞게 변경을 해야하는 경우 오버라이딩을 사용한다. 오버라이딩을 하기 위해서는 아래 조건들을 만족해야한다. 선언부가 부모 클래스의 메서드와 일치해야 합니다. 접근 제어자를 부모 클래스의 메서드 보다 좁은 범위로 변경할 수 없습니다. 예외는 부모 클래스의 메서드 보다 많이 선언할 수 없습니다. 코드 예시 자동차 클래스 (부모클래스) public class Car { String company; // 자동차 회사 private String model; // 자동차 모델 private String color; // 자동차 색상 private double pr..

JAVA 2023.06.01

[JAVA] Object

📌 Object 는 말그대로 “객체”를 의미하는 단어이며 보통, Object 클래스를 의미한다. Object 클래스는 Java 내 모든 클래스들의 최상위 부모 클래스이다. 따라서, 모든 클래스는 Object의 메서드를 사용할 수 있다. 또한 부모 클래스가 없는 자식 클래스는 컴파일러에 의해 자동으로 Object 클래스를 상속받게 된다. 🧑‍💻 Object 클래스의 메서드(많은 것중 몇가지) Object clone() : 해당 객체의 복제본을 생성하여 반환함. boolean equals(Object object) : 해당 객체와 전달받은 객체가 같은지 여부를 반환함. Class getClass() : 해당 객체의 클래스 타입을 반환함. int hashCode() : 자바에서 객체를 식별하는 정수값인 해시 ..

JAVA 2023.06.01

[JAVA] final 클래스와 final 메서드

📌 final 키워드를 클래스와 메서드에 선언하면 어떻게 될까? public final class Car {} ... public class SportsCar extends Car{} // 오류가 발생합니다. 클래스에 final 키워드를 지정하여 선언하면 최종적인 클래스가 됨으로 더 이상 상속할 수 없는 클래스가 된다. public class Car { public final void horn() { System.out.println("빵빵"); } } ... public class SportsCar extends Car{ public void horn() { // 오류가 발생합니다. super.horn(); } } 메서드에 final 키워드를 지정하여 선언하면 최종적인 메서드가 됨으로 더 이상 오버라이..

JAVA 2023.06.01

[JAVA] 클래스간의 관계

포함 관계 포함관계는 상속과 같은 방식으로 관계를 맺는 게 아닌, 클래스 내에서 다른 클래스의 인스턴스를 생성하면 포함 관계라고 볼 수 있다. class Car { Door b = new Door(); } Car 클래스에서 Door 클래스의 인스턴스를 생성한다. 이렇게 클래스 내부에서 다른 클래스의 인스턴스를 생성하면 포함관계라고 볼 수 있다. 관계 설정 📌 클래스간의 관계를 분석하여 관계설정을 해줄 수 있습니다. 상속관계 : is - a (”~은 ~(이)다”) 포함관계 : has - a (”~은 ~을(를) 가지고 있다”) ex) 상속관계 상속관계 : 고래는 포유류다 👍 포함관계 : 고래는 포유류를 가지고 있다…? 🤔 ex) 포함관계 자동차는 타이어를 가지고 있다. 👍 자동차는 차문을 가지고 있다. 👍 ..

JAVA 2023.06.01