자바 65

객체(Object)와 타입(Type)의 차이

좋은 질문이야! 객체(Object)와 타입(Type)의 차이를 확실히 이해하면 다형성을 더 잘 활용할 수 있어.✅ 객체와 타입의 차이객체(Object)란?클래스의 인스턴스(실제 메모리에 생성된 것).생성된 객체는 클래스에서 정의한 필드(변수)와 메서드(동작)를 가짐.예) new Dog() → Dog 클래스의 객체 생성.타입(Type)이란?변수가 참조할 객체의 데이터 유형을 결정.변수가 접근할 수 있는 필드와 메서드를 제한함.예) Animal myDog = new Dog(); → myDog 변수의 타입은 Animal이므로, Animal 클래스에서 정의된 필드와 메서드만 사용 가능.✅ 객체 vs. 타입의 동작 차이객체는 실제로 Dog 인스턴스이지만, 참조 타입(Animal)에 따라 사용할 수 있는 기능이 제..

자바 2025.02.09

다형성이란?

다형성(Polymorphism)은 객체 지향 프로그래밍(OOP)의 핵심 개념 중 하나로, "하나의 인터페이스로 여러 형태의 동작을 수행할 수 있는 능력"을 의미해. Java를 기준으로 정리해볼게.✅ 다형성의 개념정의같은 메서드나 인터페이스를 통해 여러 객체가 서로 다른 동작을 수행할 수 있음.부모 클래스의 참조 변수가 자식 클래스의 객체를 가리킬 수 있음.이점코드의 재사용성 증가유지보수 용이확장성이 좋아짐✅ 다형성의 종류컴파일 타임 다형성 (Compile-time Polymorphism) → 메서드 오버로딩(Method Overloading)같은 클래스 내에서 같은 이름의 메서드를 여러 개 정의할 수 있음.매개변수의 개수, 타입, 순서가 다르면 메서드를 구분할 수 있음.컴파일 시점에 어떤 메서드를 호출할..

자바 2025.02.09

상속(Inheritance)이란?

📌 상속(Inheritance)이란?상속은 기존 클래스(부모 클래스, 슈퍼클래스)의 속성과 기능을 새로운 클래스(자식 클래스, 서브클래스)에서 재사용하는 객체지향 프로그래밍(OOP)의 개념이야.자바에서는 extends 키워드를 사용해서 상속을 구현해.1️⃣ 상속의 개념✔ 코드 재사용 → 기존 클래스를 재사용하여 중복을 줄이고 유지보수를 쉽게 함.✔ 확장성(Extensibility) → 기존 클래스의 기능을 확장하여 새로운 기능을 추가할 수 있음.✔ 다형성(Polymorphism) → 부모 타입으로 자식 객체를 참조할 수 있어 유연한 코딩이 가능함.✅ 기본적인 상속 예제// 부모 클래스class Animal { void makeSound() { System.out.println("동물이..

자바 2025.02.09

Object 클래스란?

📌 Object 클래스란?Object 클래스는 자바에서 모든 클래스의 최상위 부모 클래스로, 자바의 모든 클래스는 자동으로 Object 클래스를 상속받음.public class Test { // 자동으로 extends Object 가 포함됨}📌 개발자가 extends Object를 명시하지 않아도 자동으로 상속됨.1️⃣ Object 클래스가 하는 역할✅ (1) 모든 클래스가 공통적으로 가져야 할 기능 제공모든 객체에서 공통적으로 필요한 기능을 제공하여, 표준화된 동작을 할 수 있도록 설계됨.예를 들어, 객체 비교(equals()), 해시 코드(hashCode()), 문자열 변환(toString()) 등의 기능이 있음.✅ (2) 다형성(Polymorphism) 지원Object 타입을 사용하면 어..

자바 2025.02.09

super() 정리2

super 사용시 기억해야 할 사항1. 자식클래스의 생성자에 super()를 명시하지 않는 한 자동으로 생성자 안에 생성되어 암시적으로 존재한다.2. 자식클래스의 super()의 매개변수와 동일한 매개변수를 가진 생성자가 슈퍼클래스에 존재하지 않으면 컴파일 오류가 발생한다.📌 super()란?super()는 자식 클래스의 생성자에서 부모 클래스의 생성자를 호출하는 키워드야.자바에서 모든 클래스는 기본적으로 부모 클래스(Object 포함)를 상속받기 때문에 super()를 사용하여 부모 생성자를 호출할 수 있음.1️⃣ super()의 기본 개념자식 클래스의 생성자는 항상 먼저 부모 클래스의 생성자를 호출해야 함.개발자가 super()를 명시하지 않으면, 컴파일러가 자동으로 super();를 추가함.sup..

자바 2025.02.09

매개변수가 없는 메서드와 매개변수가 없는 생성자 비교를 통한 생성자 이해

📌 매개변수가 없는 메서드 vs 매개변수가 없는 생성자Java에서 매개변수가 없는 메서드와 매개변수가 없는 생성자는 호출 방식이 유사하지만, 역할과 동작 방식에서 차이가 있습니다.1️⃣ 매개변수가 없는 메서드 (No-Argument Method)✅ 특징클래스의 동작(Behavior)을 정의함.객체가 이미 존재하는 상태에서 실행됨.static 메서드는 객체 생성 없이 호출 가능.주로 특정 기능을 수행하는 데 사용됨.✅ 예제public class Example { public void greet() { // 매개변수 없음 System.out.println("Hello, World!"); } public static void main(String[] args) { E..

자바 2025.02.08

final 키워드 특징

🚀 final이란?final은 변경할 수 없도록 제한하는 키워드입니다.Java에서 final은 변수, 메서드, 클래스에 적용될 수 있으며, 각각의 의미가 다릅니다.✅ 1️⃣ final 변수 (변경 불가능한 값)✔ final이 붙은 변수는 한 번만 값을 설정할 수 있고, 이후 변경할 수 없음.✔ 선언과 동시에 초기화하거나, 생성자에서 한 번만 초기화 가능.📌 예제 (선언과 동시에 초기화)public class Example { private final int number = 10; // ✅ 한 번 초기화, 변경 불가 public void changeValue() { // number = 20; // ❌ 오류 발생 (final 변수는 변경 불가능) }}📌 예제 (생성자에서 ..

자바 2025.02.08

null이란?

🚀 null이란?null은 Java에서 "아무것도 없는 상태"를 의미하는 특별한 값입니다.즉, 참조형(객체) 변수가 메모리에 어떤 객체도 가리키지 않고 있는 상태입니다.✅ 1️⃣ null이 적용되는 대상null은 참조형 변수(객체)에만 적용되며, 기본형(int, double, boolean 등)에는 적용되지 않습니다.📌 예제 (참조형 변수에 null 적용 가능)String text = null; // ✅ 문자열 변수가 어떤 객체도 가리키지 않음Integer number = null; // ✅ 래퍼 클래스(참조형)에서는 사용 가능📌 기본형 변수에는 null을 사용할 수 없음int num = null; // ❌ 오류 발생 (기본형 변수에는 `null` 사용 불가)✔ 기본형(int, double, boo..

자바 2025.02.08

잘못된 메서드 사용 예시

main메서드 내부에 메서드 선언Java에서는 main 메서드 내부에 또 다른 메서드를 선언할 수 없습니다.모든 메서드는 클래스 내부에서만 선언할 수 있습니다.🔹 Java에서 메서드 선언 규칙✅ 올바른 방법 (클래스 내부)public class Test { public static void printNumbers() { System.out.println("Hello, World!"); } public static void main(String[] args) { printNumbers(); // 메서드 호출 가능 }}printNumbers() 메서드는 Test 클래스 내부에서 선언됨.main()에서 메서드를 호출하여 사용 가능.❌ 잘못된 방법 (main 메서..

자바 2025.02.08

가변인자와 배열인자

📌 가변 인자(varargs)와 배열(array)의 차이점가변 인자와 배열은 모두 여러 개의 값을 받을 수 있지만, 사용법과 동작 방식에 차이가 있습니다.1️⃣ 가변 인자 (varargs)✅ 특징타입... 변수명 형태로 사용 (Object... values)호출할 때 인자의 개수를 자유롭게 조절 가능내부적으로 배열(T[])로 변환되어 사용됨배열을 직접 생성할 필요 없음한 메서드에서 가변 인자는 하나만 사용 가능하며, 반드시 마지막 매개변수로 위치해야 함✅ 예제 (가변 인자)public class Test { public static void printValues(String title, Object... values) { // 가변 인자 사용 System.out.println("Tit..

자바 2025.02.08