목록분류 전체보기 (231)
코딩 기록들
equals() 메서드 두 인스턴스의 주소 값을 비교하여 true/false를 반환 재정의 하여 두 인스턴스가 논리적으로 동일함의 여부를 구현함 인스턴스가 다르더라도 주소값(hash code 값이 반환하는 값)이 논리적으로 동일한 경우 true를 반환하도록 재정의 할 수 있음 ex) 같은 학번, 같은 사번, 같은 아이디의 회원... equals()와 hashCode()는 페어임. equals를 오버라이딩하면, 그개체가 반환하는 hash값도 오버라이딩 해줘야함 hashCode() 메서드 hashCode()는 인스턴스의 저장 주소를 반환함. (int 값으로 반환) 힙메모리에 인스턴스가 저장되는 방식이 hash 방식 hash : 정보를 저장, 검색하는 자료구조 자료의 특정 값(키 값)에 대한 저장 위치를 반환..

Object 클래스 - 모든 클래스의 최상위 클래스 (루트 클래스) - java lang패키지 안에 들어있음! -> 프로그래밍시 import 하지 않아도 자동으로 imort됨 - ex) String, Integer, System... - 모든 클래스는 Object 클래스를 상속 받음 - Object 클래스의 메서드 중 (final로 선언되어있지 않은)일부는 재정의해서 사용할 수 있음 - 컴파일러가 extends Object를 추가함 ex) class Student => class Student extends Object 재정의해서 쓸수있는 메소드 예시 toString() 메서드 - 객체의 정보를 String으로 바꾸어서 사용할 때 쓰임 - String이나 Integer 클래스는 이미 재정의 되어 있음 t..

여러 인터페이스 구현 - 자바의 인터페이스는 구현 코드가 없으므로 (자바8이후로 default, static메소드가 추가되긴 했지만 기본적으로는 구현코드 없음) 하나의 클래스가 여러 인터페이스는 구현 할 수 있음 (여러 implement 가능! (기존자바는 diamond problem때문에 다중상속이 안됨. 단일상속만 가능함)) - 디폴트 메서드가 중복 되는 경우는 구현 하는 클래스에서 재정의 하여야 함 (모호하므로) - 여러 인터페이스를 구현한 클래스는 인터페이스 타입으로 형 변환 되는 경우 해당 인터페이스에 선언된 메서드만 사용 가능 함 public interface Buy { void buy(); //단일타입 default void order(){ System.out.println("buy orde..
상수 - 모든 변수는 상수로 변환됨 - public static final 추상메서드 - 모든 선언된 메서드는 추상메서드 - public abstract (자바8이후) 디폴트(default)메서드 - 구현을 가지는 메서드 - 인터페이스를 구현하는 클래스들에서 공통으로 사용할 수 있는 기본메서드 - default 키워드 사용 default void description() { System.out.println("정수 계산기를 구현합니다."); myMethod(); } 구현하는 클래스에서 재정의할수있음 @Override public void description() { System.out.println("CompleteCalc에서 재정의한 default 메서드"); //super.description(); ..

하나의 솔루션(소스)안에서 하나의 인터페이스를 사용하여 구현하는 방법 1. 인터페이스를 정의 2. 이걸 oracle, mysql, 다른db로 구현한 예를 replace될수있도록 구현하기 인터페이스를 활용한 dao 구현 - DB에 회원 정보를 넣는 dao(data access object)를 여러 DB 제품이 지원될 수 있게 구현함 - 환경파일(db.properties) 에서 database의 종류에 대한 정보를 읽고 그 정보에 맞게 dao 인스턴스를 생성하여 실행될 수 있게 함 source hierachy package ch2_13.domain.userinfo.dao.mysql; import ch2_13.domain.userinfo.UserInfo; import ch2_13.domain.userinfo...

인터페이스 - 기본적으로 메서드를 선언을 하면 : public abstract로 모든 메서드가 선언됨 - 모든 변수는 : 상수로 선언됨 public static final (구현코드가 하나도없기때문에 그 안에서 멤버변수를 가질 수 없음) interface 인터페이스 이름{ public static final float pi = 3.14F; public void makeSomething(); } - 구현되어있는 코드를 -> 상속받는것 ex추상클래스 - 인터페이스는 구현코드가 없으므로 -> (하위의 상속받는 클래스가) 인터페이스를 상속이 아닌, '구현'한다(implement라고 표현함) 인터페이스 정의와 구현 예제 public interface Calc { double PI = 3.14; //상수 int E..

라이브러리 - jdk에 많은 라이브러리가 있고, 이걸 프로그래머가 가져다가 프로그래밍에 씀 - 프로그래밍의 전반적인 제어권(flow)는 프로그래머에게 있음 프레임워크 - 프레임워크 (ex.안드로이드) 도입 :흐름이 다 정해져있음 - 프로그래머가 하는 일 : place hole(구멍을 메꾸는 일) 세부적인 기능을 구성하는것이 프로그래머가 하는 일 -> 템플릿메서드는 프레임워크에서 많이 쓰는 설계 패턴! 템플릿 메서드 - 템플릿이라는 틀을 가진 메소드. 시나리오를 정의해놓고, 시나리오에따라 흐름이 흘러가고, 그 안에 추상메서드가 있고, 추상메서드를 메서드패턴을 가진 클래스를 상속받은 클래스가 구현하는 것 추상 메서드나 구현 된 메서드를 활용하여 코드의 흐름(시나리오)를 정의하는 메서드 final로 선언하여 ..

추상클래스 구현 코드 없이 메서드의 선언만 있는 추상 메서드(abstract method)를 포함한 클래스 추상클래스 = 상속을 하기위해 만든 클래스 메서드 선언(declaration) : 반환타입, 메서드 이름, 매개변수로 구성 메서드 정의(definition) : 메서드 구현(implementation)과 동일한 의미 구현부(body) 를 가짐 ({ }) 예) int add(int x, int y); // 구현부{}가 없음-선언 : 추상메서드 int add(int x, int y){ } // 구현부가 있음, 추상 메서드 아님 abstract 예약어를 사용 추상 클래스는 new 할 수 없음 ( 인스턴스화 할 수 없음 ) 추상클래스 구현 메서드에 구현 코드가 없으면 abstract 로 선언 도식도에 이텔..