Burninghering's Blog
article thumbnail
4-2.Object 클래스의 다른 메서드들 활용하기
JAVA 2022. 1. 26. 15:25

인스턴스가 생성되면, 동적(힙)메모리에 메모리 공간이 생기고 인스턴스의 이름은 그 메모리를 가리키는 참조변수가 된다. 만약 두 개의 인스턴스의 주소값을 찍었을 때, 같은 값이 나온다면 같은 객체인 것이다. 1. equals() 메서드 -> 저장 주소 비교 두 인스턴스의 주소 값(hash code,물리적인 저장 주소)을 비교하여 true/false를 반환 우리가 재정의 하여 두 인스턴스가 논리적으로 동일함의 여부를 구현함(hashCode()도 오버라이딩해줘야함) 인스턴스가 물리적으로(메모리상에서의 주소) 다르더라도, 논리적으로(인스턴스의 값) 동일한 경우 true를 반환하도록 재정의 할 수 있음 (같은 학번, 같은 사번, 같은 아이디의 회원.... 을 유일한 키로 지정하여 hashCode값이 학번/사번/아..

article thumbnail
4-1.Object 클래스
JAVA 2022. 1. 26. 13:20

Object 클래스 - 모든 클래스의 최상위 클래스 1. java.lang 패키지안에 들어있음 프로그래밍시 import 하지 않아도 자동으로 imort됨 import.java.lang.*; 많이 사용하는 기본 클래스들이 속한 패키지 String, Integer, System... 2. 모든 클래스는 Object 클래스를 상속 받는다 java.lang.Object 클래스 모든 클래스의 최상위 클래스는 모든 클래스는 Object에서 상속받고, Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있음 컴파일러가 extends Object를 추가함 class Student => class Student extends Object 모든 클래스는 Object 클래스를 상속받는다. 그렇기 때문에 모든 클래스..

article thumbnail
3-15.객체 지향 핵심 - 여러 인터페이스 구현하기, 인터페이스의 상속
JAVA 2022. 1. 24. 22:08

여러 인터페이스 구현하기, 인터페이스의 상속 1. 여러 인터페이스 구현 자바의 인터페이스는 구현 코드가 없으므로 하나의 클래스가 여러 인터페이스는 구현 할 수 있음 디폴트 메서드가 중복 되는 경우는 구현 하는 클래스에서 재정의 하여야 함 (인스턴스가 있어야 사용 가능해서) 여러 인터페이스를 구현한 클래스는 인터페이스 타입으로 형 변환 되는 경우, 해당 인터페이스에 선언된 메서드만 사용 가능 함 * Diamond Problem 자바의 다중 상속이 안되는 이유는 diamond problem이다. 자바는 이러한 모호성을 없애버리고, 단일 상속만 가능하도록 하게 만들었다. 하지만 인터페이스는 구현 코드가 없기 때문에 다중 상속이 가능하다. Buy.java package ch15; public interface ..

article thumbnail
3-14.객체 지향 핵심 - 인터페이스의 여러가지 요소
JAVA 2022. 1. 24. 01:50

1. 상수 모든 변수는 상수로 변환 됨 public static final double PI = 3.14; int ERROR = -999999999; 2. 추상 메서드 모든 선언된 메서드는 추상 메서드 (자동으로 public abstract가 붙는다) 3. 디폴트 메서드 (자바 8이후) 구현을 가지는 메서드, 인터페이스를 구현하는 클래스들에서 공통으로 사용할 수 있는 기본 메서드 default 키워드 사용 default void description() { System.out.println("정수 계산기를 구현합니다."); myMethod(); } 구현(implementation) 하는 클래스에서 재정의 할 수 있음 @Override public void description() { System.out...

article thumbnail
3-13.객체 지향 핵심 - 인터페이스를 활용한 다형성 구현
JAVA 2022. 1. 23. 23:32

인터페이스를 활용한 다형성 구현 (dao 구현하기) 1. 인터페이스와 다형성 하나의 인터페이스를 여러 객체가 구현하게 되면 클라이언트 프로그램은 인터페이스의 메서드를 활용하여 여러 객체의 구현을 사용할 수 있음 ( 다형성) 여러가지 예 똑같은 인터페이스를 통해서 하나를 호출하지만, 여러 개의 인스턴스를 사용 가능 똑같은 코드가 여러 개의 임플리멘테이션(구현)을 가지는 것이 다형성! 2. 인터페이스를 활용한 dao 구현하기 DB에 회원 정보를 넣는 dao(data access object)를 여러 DB 제품이 지원될 수 있게 구현함 환경파일(db.properties) 에서 database의 종류에 대한 정보를 읽고 그 정보에 맞게 dao 인스턴스를 생성하여 실행될 수 있게 함 패키지가 갖는 계층 구조를 s..

article thumbnail
3-12.객체 지향 핵심 - 인터페이스는 왜 쓰는가?
JAVA 2022. 1. 23. 22:26

인터페이스는 왜 쓰는가? 1. 인터페이스가 하는 일 리모콘도 인터페이스이다. 사람과 TV의 연결점이기 때문에 1. 인터페이스의 역할은 클래스나 프로그램이 제공하는 기능을 명시적으로 선언 2. 일종의 클라이언트 코드(서비스를 받는 쪽)와의 약속이며 클래스나 프로그램이 제공하는 명세(specification) 3. 클라이언트 프로그램은 인터페이스에 선언된 메서드 명세만 보고 이를 구현한 클래스를 사용할 수 있음 4. 어떤 객체가 하나의 인터페이스 타입이라는 것은 그 인터페이스가 제공하는 모든 메서드를 구현했다는 의미임 5. 인터페이스를 구현한 다양한 객체를 사용함 - 다형성 인터페이스를 구현한 클래스는 무척 많을 수 있어도, 클라이언트는 인터페이스에 명시된 방식으로만 쓰면 된다. 예) DB 회사가 만든 인터..

article thumbnail
3-11.객체 지향 핵심 - 인터페이스(interface)
JAVA 2022. 1. 23. 22:01

인터페이스(interface) 1. 인터페이스란? 모든 메서드가 추상 메서드로 선언됨 public abstract (내가 선언하지 않아도 abstract로 컴파일됨) 모든 변수는 상수로 선언됨 public static final (구현코드가 없기 때문에 멤버 변수를 가질 수 없음) interface 인터페이스 이름{ public static final float pi = 3.14F; public void makeSomething(); } 2. 인터페이스 정의와 구현 Calc.java package ch11; public interface Calc { double PI=3.14; int ERROR=-999999999; int add(int num1,int num2); int substract(int num..

article thumbnail
3-10.객체 지향 핵심 - 추상 클래스의 응용_템플릿 메서드 패턴
JAVA 2022. 1. 22. 16:18

추상 클래스의 응용 - 템플릿 메서드 패턴 라이브러리는 가져다쓸 수 있는 여러가지 함수들 모음 프레임워크는 JDK(Java Development Kit 자바의 좋은 라이브러리)에서 많이 가져다 쓰지만, 전체적인 프로그램의 제어권은 프로그램이 가지고 있는 것이다. 안드로이드 같은 프레임워크는 이미 흐름이 다 정해져있고, (클래스를 넣으면 어떻게 연동이 되고, 저 클래스를 넣으면 메시지가 날아가고 어떤 영향을 준다.. 등) (화면이(액티비티) 생성과정, 소멸과정, 안에서 돌아가는 일들은 다 정해져있다) 우리같은 프로그래머가 하는 일들은 구멍을 메꾸는 일이다. (화면에서 위젯이 올라온다 등..) 템플릿 메서드는 프레임워크에서 많이 쓰는 패턴이다. 이미 시나리오가 다 정해져 있고, 메세지나 클래스를 만드는 것은..