자바 65

추상 클래스

abstract는 Java에서 추상화(Abstraction)를 구현하는 데 사용되는 키워드로, 클래스 또는 메서드에 적용됩니다. 이를 통해 코드의 공통적인 구조를 정의하고, 세부적인 구현은 하위 클래스에서 처리하도록 강제할 수 있습니다. 아래에서 추상 클래스, 추상 메서드, 그리고 추상 변수에 대해 자세히 설명하겠습니다.1. 추상 클래스 (Abstract Class)1.1. 정의추상 클래스는 abstract 키워드로 선언된 클래스입니다.직접 객체를 생성할 수 없으며, 상속을 통해 자식 클래스가 이를 구현해야 합니다.공통된 동작과 구체적인 동작을 함께 정의할 수 있습니다.추상 클래스는 추상 메서드뿐만 아니라 일반 메서드도 포함할 수 있습니다.1.2. 특징인스턴스화 불가: 추상 클래스는 직접 객체를 생성할 ..

업캐스팅과 다운캐스팅 상태에서의 변수와 메서드 사용 가능 여부

1. 업캐스팅과 다운캐스팅 상태에서의 변수와 메서드 사용 가능 여부업캐스팅과 다운캐스팅 상태에서 변수, 메서드, 생성자, 오버라이딩 메서드의 사용 가능 여부는 참조 타입과 실제 객체 타입에 따라 결정됩니다. 이를 정리하면 다음과 같습니다:1. 변수와 메서드 사용 가능 여부업캐스팅 상태참조 타입이 부모 클래스이므로, 부모 클래스에 정의된 멤버만 사용할 수 있음.오버라이딩된 메서드는 참조 타입이 아닌 실제 객체 타입의 메서드가 호출됨(다형성).자식 클래스에 추가된 변수나 메서드는 접근 불가.예시class Parent { int x = 10; void show() { System.out.println("Parent Show"); }}class Child extends Parent ..

인스턴스 변수

인스턴스 변수인스턴스 변수(instance variable)는 객체(Object)마다 독립적으로 존재하는 변수입니다. 주로 클래스에서 정의되며, 특정 객체의 상태를 저장하는 데 사용됩니다. 다음은 인스턴스 변수의 주요 특징과 메모리 관련 동작에 대한 설명입니다:1. 선언과 저장 위치선언 위치: 클래스 내부, 메서드 외부에서 선언됩니다.저장 위치:객체가 생성되면, 인스턴스 변수는 힙(heap) 메모리 영역에 저장됩니다.각 객체는 독립적인 인스턴스 변수를 가지며, 같은 클래스로부터 생성된 다른 객체와 공유되지 않습니다.2. 메모리 할당 시점인스턴스 변수는 객체가 생성될 때 메모리에 할당됩니다.예를 들어, new 키워드를 통해 객체가 생성될 때 힙 메모리에 해당 객체와 관련된 인스턴스 변수가 함께 생성됩니다...

객체와 인스턴스 이해

객체(Object)의 개념객체(Object)는 프로그래밍에서 데이터와 그 데이터를 조작하는 메서드(동작)를 하나로 묶은 독립적인 단위입니다. 현실 세계의 사물이나 개념을 소프트웨어로 표현한 것으로, 상태(속성)와 행동(기능)을 가집니다. 객체 지향 프로그래밍(OOP, Object-Oriented Programming)의 핵심 요소 중 하나입니다.1. 객체의 구성 요소객체는 다음 두 가지로 구성됩니다:1) 속성 (Attributes)객체가 가지고 있는 데이터 또는 상태를 나타냅니다.클래스에서 정의된 변수(필드)에 해당합니다.예: 자동차 객체의 속성 → 색상, 속도, 모델명2) 행동 (Behaviors)객체가 할 수 있는 동작 또는 기능을 나타냅니다.클래스에서 정의된 메서드에 해당합니다.예: 자동차 객체의 ..

정적 클래스와 비정적 클래스 접근방식과 점 연산자

정적 클래스와 비정적 클래스static을 사용한 클래스와 사용하지 않은 클래스는 접근 방식에 차이가 있습니다. 아래에서 각각의 차이와 이유를 정리하겠습니다.1. 비정적 클래스 (Non-static Class)정의: static 키워드가 없는 클래스 또는 내부 클래스입니다.특징:외부 클래스의 인스턴스와 연결되어야만 사용할 수 있습니다.독립적으로 존재할 수 없으며, 반드시 외부 클래스의 객체를 통해 접근해야 합니다.비정적 멤버(필드/메서드)는 인스턴스별로 유지됩니다.예제class Outer { // 비정적 외부 클래스 class Inner { // 비정적 내부 클래스 void display() { System.out.println("Non-static Inner Clas..

참조 변수와 기본 자료형 변수

1. 참조 변수와 기본 자료형 변수란?(1) 기본 자료형 변수정의: 데이터를 직접 저장하는 변수.특징:변수에 실제 값이 저장됩니다.값이 저장된 메모리 주소를 직접 참조하지 않음.사용 예:숫자, 문자, 논리 값을 저장.예제:int a = 10; // a는 값 10을 직접 저장(2) 참조 변수정의: 객체나 배열과 같은 복합 데이터의 메모리 주소(참조값)를 저장하는 변수.특징:변수에 데이터가 아니라, 데이터가 저장된 메모리의 주소(참조값)가 저장됨.객체와 배열은 모두 참조 변수로 처리.사용 예:문자열, 배열, 사용자 정의 클래스 객체 등.예제:String str = "Hello"; // str은 "Hello" 객체가 저장된 주소를 참조int[] arr = {1, 2, 3}; // arr은 배열 객체의 주소를 ..

업캐스팅(승급)

Left dao = new Left();동작:Left 클래스의 객체가 생성됩니다.참조 변수 dao는 생성된 Left 객체의 주소를 참조합니다.특징:참조 변수와 실제 객체의 타입이 동일합니다.모든 멤버(변수와 메서드)에 정상적으로 접근할 수 있습니다.Left dao = new Right();동작:Right 클래스의 객체가 생성됩니다.참조 변수 dao는 Left 타입으로 선언되었기 때문에, Right 객체를 업캐스팅하여 참조합니다.특징:상속 관계에서만 가능한 구문입니다.dao는 Left 타입으로 제한되기 때문에, Left 클래스에 정의된 멤버(변수와 메서드)에만 접근할 수 있습니다.Right 클래스에서 추가된 고유한 멤버에는 접근하려면 다운캐스팅이 필요합니다.예제:1. Left dao = new Left()..

toString()오버라이딩

1. toString()메서드 오버라이딩하는 이유toString() 메서드는 Java의 모든 객체가 기본적으로 가지고 있는 메서드이며, 객체를 사람이 읽기 좋은 문자열로 표현하기 위해 사용됩니다. 위 코드에서 toString() 메서드를 재정의하는 이유는 다음과 같습니다:1. 객체 상태를 출력하기 위해기본 toString() 메서드는 객체의 클래스 이름과 해시코드(메모리 주소)를 반환합니다. 이 정보는 일반적으로 이해하기 어렵고, 객체의 실제 데이터를 확인할 수 없습니다.따라서 toString() 메서드를 재정의하여, 객체의 속성 값들을 문자열로 반환하도록 하면 객체의 상태를 쉽게 확인할 수 있습니다.예:Board board = new Board();board.setSubject("Notice");boa..

super() 정리1

자바에서 모든 클래스는 Object를 암시적으로 상속받기 때문에, 상속을 명시적으로 받지 않아도 모든 클래스의 생성자에는 기본적으로 super()가 포함됩니다. 또한, 상속 관계에서는 super가 호출하는 생성자가 매개변수에 맞는 생성자를 상위 클래스에서 계속 찾아가며, 최상위 클래스(Object)까지 올라갑니다.상속과 super의 동작 원리 요약Object는 모든 클래스의 최상위 부모:클래스가 명시적으로 extends로 다른 클래스를 상속받지 않더라도, 기본적으로 Object 클래스를 상속받습니다.따라서 모든 클래스에는 super()가 암시적으로 포함됩니다.super() 호출의 기본 규칙:자식 클래스의 생성자가 호출되면, 해당 생성자에서 먼저 부모 클래스의 생성자를 호출합니다.호출할 때, super()..

객체에 대한 이해.

1. left dao = new right(); 이런 경우 dao는 left를 참조해 아니면 right을 참조해?자세한 설명left 타입의 참조 변수 daodao의 선언 타입이 left이므로, dao를 통해 호출할 수 있는 메서드와 필드는 left 클래스(또는 인터페이스)의 멤버에 한정됩니다.left에 선언되지 않은 right의 고유 멤버는 dao를 통해 직접 호출할 수 없습니다.new right()right 클래스의 객체가 생성됩니다.right는 left의 자식 클래스(또는 구현 클래스)여야만 이 코드가 컴파일됩니다.참조와 실제 객체의 관계참조 변수는 left 타입이고, 실제 생성된 객체는 right입니다.다형성에 의해 참조 변수(dao)는 left 타입의 메서드와 필드만 호출할 수 있지만, 실행 시에..