본문 바로가기

개발 새발10

[Java] 자바 - 지네릭스 자바 지네릭스(Generics)자바의 지네릭스(Generics)는 컴파일 시점에 타입을 체크해서 안정성을 높여주는 기능이다.기존에는 Object로 모든 타입을 처리했기 때문에, 저장할 때와 꺼낼 때 **형변환(casting)**이 필수였다.지네릭스를 사용하면 컴파일러가 타입을 체크해주므로, 형변환이 필요 없어지고 오류 가능성도 줄어든다.Box box = new Box();box.setItem(new Apple());Apple apple = (Apple) box.getItem(); // 형변환 필요지네릭스를 적용하면 다음처럼 형변환 없이 사용할 수 있다.Box box = new Box();box.setItem(new Apple());Apple apple = box.getItem(); // 형변환 필요 없음.. 2025. 4. 17.
[Java] 자바 객체지향 - 추상클래스 VS 인터페이스 인터페이스 vs 추상 클래스추상 클래스와 인터페이스는 둘 다 미완성 설계를 제공하고, 다형성과 유연한 구조 설계를 위한 핵심 개념이다.하지만 둘 사이에는 분명한 차이가 있다.→ 이 차이는 언제 추상 클래스를 쓰고, 언제 인터페이스를 써야 하는지 판단 기준이 된다. 주요 차이점 비교구분 추상 클래스 인터페이스구분추상클래스인터페이스키워드abstract classinterface상속/구현 방법extendsimplements다중 상속불가능가능멤버 구성추상 메서드, 일반 메서드, 변수 등 포함추상 메서드, 상수만 포함 (Java 8 이후 일부 메서드 허용)접근 제어자자유롭게 설정 가능모든 메서드는 public abstract, 모든 변수는 public static final (생략 가능)공통 기능 구현가능 (일반.. 2025. 4. 10.
[Java] 자바 객체 지향 - 인터페이스 인터페이스인터페이스란?인터페이스는 일종의 추상 클래스지만, 추상 클래스보다 추상화 정도가 높다.일반 메서드나 멤버 변수는 가질 수 없고, 오직 추상 메서드와 상수만을 멤버로 가질 수 있다.모든 메서드는 public abstract모든 변수는 public static final→ 생략해도 컴파일러가 자동으로 추가해준다.public interface Animal { void sound(); // public abstract int MAX_AGE = 20; // public static final}   인터페이스는 인스턴스를 생성할 수 없다.implements 키워드를 사용해 인터페이스를 구현한다.모든 메서드를 구현하지 않으면, 해당 클래스는 추상 클래스로 선언해야 한다.. 2025. 4. 10.
[Java] 자바 객체지향 - 추상클래스 추상클래스= 미완성 설계도(= template) 또는 추상 메서드를 가진 클래스라고 할 수 있다.추상클래스는 키워드 abstract를 붙이면 된다.abstract class Animal { abstract void sound(); // 추상 메서드 void breathe() { System.out.println("숨을 쉰다"); }}미완성 설계도로 완성된 제품을 만들 수 없듯이, 추상클래스로는 인스턴스를 생성할 수 없다.왜 완성을 안 시켰을까?사람들이 공통적으로 잘 쓸만한 것들/변경되지 않을 것들(템플릿)을 남겨두고, 추가적으로 덧붙이는 걸 쉽게 하도록 도와주기 위해서  추상메서드메서드는 선언부와 구현부(몸통)으로 구성되어 있다.선언부만 작성하고 구현부는 작성하지 않은 채로.. 2025. 4. 9.
[Java] 자바 객체지향 - 클래스 멤버/인스턴스 멤버 클래스 변수와 인스턴스 변수인스턴스 변수는 클래스 영역에서 선언되며, 클래스의 인스턴스를 생성할 때 만들어진다. 그래서 인스턴스 변수의 값을 읽어 오거나 저장하기 위해서는 먼저 인스턴스를 생성해야 한다.class Dog { String name; // 인스턴스 변수}public class Main { public static void main(String[] args) { Dog myDog = new Dog(); myDog.name = "바둑이"; System.out.println(myDog.name); // 바둑이 }} 클래스 변수는 static 키워드를 붙여 선언하며, 모든 인스턴스가 공통된 저장공간(변수)를 공유한다. 인스턴스마다 독립적인 저장공.. 2025. 4. 7.