Back-end/Java (89) 썸네일형 리스트형 [JAVA] Record Class ✅ Record은 무엇인가?Record는 enum과 같은 특별한 형태의 class주로 간단하게 데이터를 저장하고 옮기는 역할records는 일반 class와는 다르게 생성자, getter, hashCode(), equals() ,toString()를 제공custom이 필요하다면 record안에 정의해서 사용가능✅ 기존코드public class SampleRecord { private final String name; private final Integer age; private final Address address; public SampleRecord(String name, Integer age, Address address) { this.name = name; thi.. [Java - 기본] 인터페이스 - 다중 구현 ✅ 인터페이스 - 다중 구현 📚 자바가 다중 상속을 지원하지 않는 이유 자바는 다중 상속을 지원하지 않는다. 그래서 extends 대상은 하나만 선택할 수 있다. 부모를 하나만 선택할 수 있다는 뜻이다. 물론 부모가 또 부모를 가지는 것은 괜찮다. ✓ 다중 상속 그림 만약 비행기와 자동차를 상속 받아서 하늘을 나는 자동차를 만든다고 가정해보자. 만약 그림과 같이 다중 상속을 사용하게 되면 AirplaneCar 입장에서 move()를 호출할 때 어떤 부모의 move()를 사용해야 할 지 애매한 문제가 발생한다. 이것을 다이아몬드 문제라 한다. 그리고 다중 상속을 사용하면 클래스 계층 구조가 매우 복잡해질 수 있다. 이런 문제점 때문에 자바는 클래스의 다중 상속을 허용하지 않는다. 대신에 인터페이스의 다중 .. [Java - 기본] 인터페이스 ✅ 인터페이스 자바는 순수 추상 클래스를 더 편리하게 사용할 수 있는 인터페이스라는 기능을 제공한다. ✏️ 순수 추상 클래스 public abstract class AbstractAnimal { public abstract void sound(); public abstract void move(); } ✏️ 인터페이스 인터페이스는 class가 아니라 interface 키워드를 사용하면 된다. public interface InterfaceAnimal { public abstract void sound(); public abstract void move(); } ✏️ 인터페이스 - public abstract 키워드 생략 가능 public interface InterfaceAnimal { void soun.. [Java - 자바] 추상 클래스2 ✅ 순수 추상 클래스 : 모든 메서드가 추상 메서드인 추상 클래스 앞서 만든 예제에서 move()도 추상 메서드로 만들어야 한다고 가정해보자. 이 경우 AbstractAnimal 클래스의 모든 메서드가 추상 메서드가 된다. 이런 클래스를 순수 추상 클래스라 한다. move()가 추상 메서드가 되었으니 자식들은 AbstractAnimal의 모든 기능을 오버라이딩 해야 한다. ✅ 예제4 ✏️ AbstractAnimal package poly.ex4; public abstract class AbstractAnimal { public abstract void sound(); public abstract void move(); } ✏️ Dog package poly.ex4; public class Dog exte.. [Java - 기본] 추상 클래스1 ✅ 추상 클래스 동물(Animal)과 같이 부모 클래스는 제공하지만, 실제 생성되면 안되는 클래스를 추상 클래스라 한다. 추상 클래스는 이름 그대로 추상적인 개념을 제공하는 클래스이다. 따라서 실체인 인스턴스가 존재하지 않는다. 대신에 상속을 목적으로 사용되고, 부모 클래스 역할을 담당한다. abstract class AbstractAnimal {...} 추상 클래스는 클래스를 선언할 때 앞에 추상이라는 의미의 **abstract 키워드**를 붙여준다. 추상 클래스는 기존 클래스와 완전히 같다. 다만 new AbstractAnimal()와 같이 직접 인스턴스를 생성하지 못하는 제약이 추가된 것이다. ✅ 추상 메서드 부모 클래스를 상속 받는 자식 클래스가 반드시 오버라이딩 해야 하는 메서드를 부모 클래스에.. [인프런 Java] 다형성 활용3 ✅ 다형성 활용3 이번에는 배열과 for문을 사용해서 중복을 제거해보자. 단축키 Inline Variable : command + option + N Extract Method : command + option + M ✏️ AnimalPolyMain2 package poly.ex2; public class AnimalPolyMain2 { public static void main(String[] args) { Dog dog = new Dog(); Cat cat = new Cat(); Caw caw = new Caw(); Animal[] animalArr = {dog, cat, caw}; // 변하지 않는 부분 for (Animal animal : animalArr) { System.out.println(.. [Java - 기본] 다형성 활용2 ✅ 다형성 활용2 앞서 설명한 예제를 다형성을 사용하도록 변경해보자. ✅ 예제2 다형성을 사용하기 위해 여기서는 상속 관계를 사용한다. Animal(동물)이라는 부모 클래스를 만들고 sound() 메서드를 정의한다. 이 메서드는 자식 클래스에서 오버라이딩 할 목적으로 만들었다. Dog, Cat, Caw는 Animal 클래스를 상속받았다. 그리고 각각 부모의 sound() 메서드를 오버라이딩 한다. ✏️ Animal package poly.ex2; public class Animal { public void sound() { System.out.println("동물 울음 소리"); } } ✏️ Dog package poly.ex2; public class Dog extends Animal { @Overri.. [Java - 기본] 다형성 활용1 ✅ 다형성 활용1 지금까지 학습한 다형성을 왜 사용하는지, 그 장점을 알아보기 위해 우선 다형성을 사용하지 않고 프로그램을 개발한 다음에 다형성을 사용하도록 코드를 변경해보자. 아주 단순하고 전통적인 동물 소리 문제로 접근해보자. 개, 고양이, 소의 울음 소리를 테스트하는 프로그램을 작성해보자. 먼저 다형성을 사용하지 않고 코드를 작성해보자. ✅ 예제1 ✏️ Dog package poly.ex1; public class Dog { public void sound() { System.out.println("멍멍"); } } ✏️ Cat package poly.ex1; public class Cat { public void sound() { System.out.println("냐옹"); } } ✏️ Caw .. 이전 1 2 3 4 5 ··· 12 다음