목록분류 전체보기 (231)
코딩 기록들
코드의 재사용에 있어서 객체지향 프로그래밍에서는 IS-A관계, HAS-A관계 2가지 방법이 있음 1. IS-A 관계(is a relationship : inheritance) 일반적인(general) 개념과 구체적인(specific) 개념과의 관계 상위 클래스 : 하위 클래스보다 일반적인 개념 ( 예: Employee ) 하위 클래스 : 상위 클래스보다 구체적인 개념들이 더해짐 ( 예: Engineer, Manager...) 상속은 클래스간의 결합도가 높은 설계 상위 클래스의 수정이 많은 하위 클래스에 영향을 미칠 수 있음 계층구조가 복잡하거나 hierarchy가 높으면 좋지 않음 2. HAS-A 관계 (composition) 클래스가 다른 클래스를 포함하는 관계 ( 변수로 선언 ) 코드 재사용의 가장 ..
오버라이딩(overriding) - 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음 형 변환과 오버라이딩 메서드 호출 Customer vc = new VIPCustomer(); //vc 변수의 타입은 Customer지만 인스턴스의 타입은 VIPCustomer 임 - 자바에서는 항상 인스턴스의 메서드가 호출 됨 - 자바의 모든 메서드는 가상 메서드(virtual method) 임 가상메서드 - 원리 : 가상 메서드 테이블에서 해당 메서드에 대한 address를 가지고 있음 (함수를 호출하면 이름에따른 매핑되는 주소가 호출되는것.) - 재정의된 경우는 재정의 된 메서드의 주소를 가리킴
객체 간 상속이란? 클래스 상속 - 새로운 클래스를 정의 할 때 이미 구현된 클래스를 상속받아서 속성이나 기능을 확장하여 클래스를 구현 - 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를 구현해야 할때 기존의 클래스 상속함 상속 하는 클래스 : 상위 클래스, parent class, base class, super class 상속 받는 클래스 : 하위 클래스, child class, derived class, subclass 상속 문법 class B extends A{ } 상속을 구현하는 경우 - 일반적인 클래스에서 구체적인 클래스로 접근할 때 사용함 - 상위 클래스는 하위 클래스 보다 더 일반적인 개념과 기능을 가짐(하위클래스는 상위 클래스보다 구체적인 개념과기능 가짐) - 하위 클래스가 상위..
ArrayList - java.util패키지에서 제공됨 - 기존의 배열 선언과 사용 방식 : 배열의 길이를 정하고 요소의 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사해야 했음 -> ArrayList는 객체 배열을 좀더 효율적으로 관리하기 위해 자바에서 제공해 주는 클래스 ArrayList 주요 메서드 boolean add(E e) - 요소하나를 배열에 추가 (E = 요소의 자료형을 의미함) int size() - 배열에 추가된 요소전체개수 반환 E get(int index) - 배열의 index위치 요소값 반환 E remove(int index) - 배열의 index위치요소값 제거후 그 값 반환 boolean isEmpty() - 배열이 비어있는지 확인 예제 public class ArrayUt..
배열이란 - 동일한 자료형의 순차적 자료구조 - 인덱스 연산자를 이용해서 빠른참조가 가능 - array : 추가, 삭제시 수행시간이 조금 걸린다 : O(n) - 물리적, 논리적 위치가 동일 - 데이터가 쭉 연결이 되어있어야함. 중간에 비는 칸이 생길 수 없음 [배열에 들어갈 수 있는것] 1) 기본자료형 int, double .. 2) 객체배열 : Student, Employee.. - ArrayList : 자바 유틸 패키지 안에서 제공되는 객체배열을 구현해놓은 클래스 배열 선언 방법1) int[] arr1 = new int[10]; 방법2) int arr2[] = new int[10]; 배열 초기화 배열은 선언과 동시에 자료형따라 초기화됨(정수 0 / 실수 0.0 / 객체 null) - new 라는 키워..
static변수를 사용하는 경우 - 여러인스턴스가 공유하는 기준값이 필요한 경우 ex) 학생마다 새로운학번 생성, 새로운 사번 생성, 카드 발급할때마다 새로운 카드번호 부여 static변수 선언과 사용하기 static int serialNum; - 처음 프로그램이 메모리에 로딩될때 메모리 할당 (인스턴스가 생성될때 만들어지는 변수가 아님) -> 인스턴스생성과 상관없이 사용가능(static변수는 인스턴스에서 공통으로 사용하는 영역임) -> 클래스이름으로 직접참조할것 - = 클래스변수, 정적변수 static메소드 에서는 인스턴스 변수 사용불가능 - static메소드는 인스턴스 생성과 무관하게 클래스이름으로 호출 -> 인스턴스 생성 전 호출될수 있으므로 static메소드 내부에서는 인스턴스 변수를 사용할 수 ..
인스턴스멤버 - 인스턴스멤버 = 객체(인스턴스)생성 후 사용할 수 있는 필드와 메소드 this - 객체 내부에서 인스턴스 멤버에 접근하기 위해 사용 - 생성자와 메소드의 매개변수 이름이 필드와 동일한 경우, 인스턴스멤버인 필드임을 명시하고자 할 때 사용 정적멤버와 static - 정적멤버 = 클래스에 고정된 멤버 - 객체를 생성하지 않고 사용할 수 있는 필드와 메소드 정적멤버 선언 - 필드와 메소드 선언시 static 키워드 추가 정적멤버 사용 - 클래스 이름과 함께 도트연산자로 접근 클래스.필드; or 클래스.메소드(매개값, ...); 정적메소드 선언시 주의할 점 - 정적메소드 안에서 인스턴스 멤버 사용하고싶다면 : 1) 객체먼저 생성한 후 2) 참조변수로 접근 - 객체자신의 참조인 this 사용불가능..
객체 - 자신의 속성을 가지고있으며 식별 가능한 것 - 속성(=필드) + 동작(=메소드) 로 구성됨 - 객체들 사이의 상호작용 = 메소드 - 객체가 다른객체의 기능을 이용하는것 = 메소드호출 [ 메소드 호출 형태 ] 리턴값 = 객체.메소드(매개값1, 매개값2,..); 객체와 클래스 - 객체는 설계도(=클래스)를 바탕으로 만들어짐 - 클래스 : 객체생성위한 필드&메소드가 정의되어있음 - 클래스로부터 만들어진 객체 = 클래스의 '인스턴스' 객체생성과 클래스 변수 - 클래스로부터 객체를 생성하려면 : new연선자 사용 new 클래스(); - new =클래스로부터 객체를 생성시키는 연산자 - new뒤에는 생성자(= 클래스() 형태)가 옴 - new연산자로 생성된 객체 = 메모리 '힙'영역에 생성됨 클래스의 구성..