IT 개발노트
1. 다형성(polymorphism) 1.1 다형성이란? - 하나의 참조변수로 여러 타입의 객체를 참조할 수 있는 것. -> 조상타입의 참조변수로 자손타입의 객체를 다룰 수 있는 것이 다형성. - 조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있지만, 반대로 자손타입의 참조변수로 조상타입의 인스턴스를 참조할 수는 없다. 1.2 참조변수의 형변환 - 서로 상속관계에 있는 타입간의 형변환만 가능하다. - 자손 타입에서 조상타입으로 형변환하는 경우, 형변환 생략가능 자손타입 -> 조상타입(Up-casting) : 형변환 생략가능 자손타입
1. 제어자(modifiers) 1.1 제어자란? - 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다. - 제어자는 크게 접근 제어자와 그 외의 제어자로 나뉜다. - 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근제어자는 단 하나만 사용할 수 있다. 1.2 static - 클래스의, 공통적인 - static이 사용될 수 있는 곳 : 멤버변수, 메서드, 초기화 블럭 1.3 final - 마지막의, 변경될 수 없는 - final이 사용될 수 있는 곳 - 클래스, 메서드, 멤버변수, 지역변수 1.4 생성자를 이용한 final 멤버변수 초기화 - final이 붙은 변수는 상수이므로 보통은 선언과 초기화를 동시에 하지만, 인스턴스변수의 경우 생성자에서 초기화 할 수 있다. ..
1. package와 import 1.1 패키지(package) - 서로 관련된 클래스와 인터페이스의 묶음. - 클래스가 물리적으로 클래스파일(*.class)인 것처럼, 패키지는 물리적으로 폴더이다. 패키지는 서브패키지를 가질 수 있으며 '.'으로 구분한다. - 클래스의 실제 이름(full name)은 패키지명이 포함된 것이다. (String클래스의 full name은 java.lang.String) - rt.jar는 Java API의 기본 클래스들을 압축한 파일 (JDK설치경로\jre\lib에 위치) 1.2 패키지의 선언 - 패키지는 소스파일에 첫 번째 문장(주석 제외)으로 단 한번 선언한다. - 하나의 소스파일에 둘 이상의 클래스가 포함된 경우, 모두 같은 패키지에 속하게 된다.(하나의 소스파일에 단..
1. 오버라이딩(overriding) 1.1 오버라이딩이란? - 조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것을 오버라이딩이라고 한다. 1.2 오버라이딩의 조건 - 선언부가 같아야 한다.(이름, 매개변수, 리턴타입) - 접근제어자를 좁은 범위로 변경할 수 없다. -> 조상의 메서드가 protected라면, 범위가 같거나 넓은 protected나 public으로만 변경할 수 있다. - 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다. class Parent { void parentMethod() throws IOException, SQLException { // ... } } class Child extends Parent { void parentMethod() th..
1. 상속(inheritance) 1.1 상속의 정의와 장점 - 상속이란 ? -> 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것. -> 두 클래스를 조상과 자손으로 관계를 맺어주는 것. -> 자손은 조상의 모든 멤버를 상속받는다. (생성자, 초기화블럭 제외) -> 자손의 멤버개수는 조상보다 적을 수 없다.(같거나 많다.) class 자손클래스 extends 조상클래스 { // ... } 1.2 클래스간의 관계 - 상속관계(inheritance) -> 공통부분은 조상에서 관리하고 개별부분은 자손에서 관리한다. -> 조상의 변경은 자손에 영향을 미치지만, 자손의 변경은 조상에 아무런 영향을 미치지 않는다. - 포함관계(composite) -> 포함이란? --> 한 클래스의 멤버변수로 다른 클래스를 ..
1. 변수의 초기화 1.1 변수의 초기화 - 변수를 선언하고 처음으로 값을 저장하는 것 - 멤버변수(인스턴스변수, 클래스변수)와 배열은 각 타입의 기본값으로 자동초기화되므로 초기화를 생략할 수 있다. - 지역변수는 사용전에 꼭 초기화를 해주어야한다. class InitTest { int x; // 인스턴스변수 int y = x; // 인스턴스변수 void method1() { int i; // 지역변수 int j = i; // 컴파일 에러!!! 지역변수를 초기화하지 않고 사용했음. } } 변수의 초기화 - 예시 1.2 멤버변수의 초기화 - 멤버변수의 초기화 방법 - 명시적 초기화(explicit initialization) class Car { int door = 4; // 기본형(primitive ty..
1. 생성자 1.1 생성자(constructor)란? - 인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드' (인스턴스 초기화 : 인스턴스 변수에 적절한 값을 저장하는 것) - 인스턴스 변수의 초기화 또는 인스턴스 생성시 수행할 작업에 사용 - 몇가지 조건을 제외하고는 메서드와 같다. - 모든 클래스에는 반드시 하나 이상의 생성자가 있어야 한다. 1.2 생성자의 조건 - 생성자의 이름은 클래스의 이름과 같아야 한다. - 생성자는 리턴값이 없다. (하지만 void를 쓰지 않는다.) 클래스이름(타입 변수명, 타입 변수명,...) { // 인스턴스 생성시 수행될 코드 // 주로 인스턴스 변수의 초기화 코드를 적는다. } class Card { ... Card() { // 매개변수가 없는 생성자. //..
1. 변수와 메서드 1.1 선언위치에 따른 변수의 종류 - 변수의 선언위치가 변수의 종류와 범위를 결정한다. - 인스턴스변수(instance variable) -> 각 인스턴스의 개별적인 저장공간. 인스턴스마다 다른 값 저장가능 -> 인스턴스 생성 후, '참조변수.인스턴스변수명'으로 접근 -> 인스턴스를 생성할 때 생성되고, 참조변수가 없을 때 가비지컬렉터에 의해 자동제거됨 - 클래스변수(class variable) -> 같은 클래스의 모든 인스턴스들이 공유하는 변수 -> 인스턴스 생성없이 '클래스이름.클래스변수명'으로 접근 -> 클래스가 로딩될 때 생성되고 프로그램이 종료될 때 소멸 - 지역변수(local variable) -> 메서드 내에 선언되며, 메서드의 종료와 함께 소멸 -> 조건문, 반복문의 ..