[Wrapper 클래스] : 기본형을 클래스로 정의한 것으로, 기본형을 객체로 다루기 위해 사용. Wrapper 클래스의 equals 메소드는 오버라이딩 되어 있으므로 내용을 비교한다. autoBoxing : new를 사용하지 않고도 Wrapper 클래스 객체화하는 것 ex) Integer intg = 100; // Integer intg = new Integer(100); unautoBoxing : Wrapper 클래스 객체를 자동으로 기본형으로 바꾸는 것 ex) int i = intg + 10; /* int temp = intg.intValue(); int i = temp + 10; */ ※ autoBoxing 기능은 처리 속도가 느리기 때문에 정석대로 작성하는 걸 추천!
[Object 클래스의 기본 메소드] 1. toString() : 해당 클래스의 객체를 문자열로 반환 객체명을 출력하거나, 객체에 문자열을 더하여 출력하면 해당 객체의 toString 메소드가 자동으로 호출된다. toString 메소드를 작성하지 않은 경우에는 (패키지명).(클래스명)@(객체의주소) 가 출력되고, 작성한 경우에는 toString 메소드의 해당 내용이 출력된다. ex) package ObjectExs; public class ObjectEx1 { public static void main(String[] args) { ObjectEx1 obj = new ObjectEx1(); obj.toStringFunc(obj); } public void toStringFunc(ObjectEx1 obj)..
※ 예외 클래스 상속도 1. 직접 처리 : try ~ catch -> 더 효율적! 2. 선언 처리 : throws [try ~ catch] 사용법 : try { 예외 발생 예상 코드 } catch(해당예외클래스 e) { 예외 처리 코드 } => 구체적인 예외 처리가 가능! try문 내에서 예외 발생 시 아래에 있는 코드는 실행하지 않고 try문을 빠져나옴 그러므로 예외가 발생하더라도 실행해야하는 코드가 있다면 finally문 사용!!! catch문을 여러 개 사용할 때 해당예외클래스가 상위일수록 아래에 배치해야 한다! [finally] 예외가 발생하더라도 꼭 실행해야 하는 코드는 finally문을 사용하여 작성한다! (-> try ~ catch 문은 예외가 발생하면 그 이후의 코드는 실행되지 않기 때문)..
다형성(Polymorphism) : 부모 클래스의 참조변수로 자식 클래스의 객체를 다룰 수 있는 성질 (역은 성립하지 X !!) 상속관계 간의 형변환만 가능하다. 자손타입 -> 부모타입 형변환 (UpCasting) : 자동 형변환 (암묵적 형변환) 부모타입 -> 자손타입 형변환 (DownCasting) : 강제 형변환 (명시적 형변환) ex) public class Example { public static void main(String[] args) { Fruit fr = new Fruit(); Kiwi ki = new Kiwi(); fr = ki; // 자동 형변환 ki = (Kiwi)fr; // 강제 형변환 fr = null; ki = (Kiwi)fr;// ki는 null을 가리킴 ki.answer..
[인터페이스] 구현방식 : class 클래스명 implements 인터페이스명 1. 클래스를 작성하는 데에 도움을 주기 위해 사용한다. (추상클래스와 비슷하지만 추상화 정도가 더 높음) 2. 추상 메소드와 상수만을 멤버로 갖는다. 3. 인터페이스 내의 메소드는 항상 public이며 abstract 키워드가 생략되어 있다. -> 메소드를 인터페이스 외부에서도 구현할 수 있으려면 모두가 볼 수 있는 public으로 지정해야 함. 또한 인터페이스 내의 메소드는 항상 추상 메소드여야하므로 써있지 않더라도 abstract 가 생략되어 있음. 4. 여러 개의 인터페이스를 동시에 상속(extends, implements) 받을 수 있다. (인터페이스는 콤마로 구분) 5. 인터페이스 간의 상속 시에는 implement..
[abstract] 1. 추상클래스는 다른 클래스를 작성하는 데 도움을 주기 위해 작성된다. 2. 추상클래스를 상속받은 클래스는 추상 메소드를 반드시 오버라이딩 해야한다. 3. 메소드를 선언만 할 것이면 메소드 앞에 abstract 키워드를 붙여야 한다. 4. abstract 메소드를 하나라도 가지는 클래스 앞에도 abstract 키워드를 붙여야 한다. 5. abstract 키워드는 변수에는 사용할 수 없다. [final] 클래스에 붙이면 => 해당 클래스를 상속하는 것이 불가 메소드에 붙이면 => 해당 메소드를 오버라이딩하는 것이 불가 변수에 붙이면 => 상수형 변수 (final 키워드를 변수에 붙이는 경우 보통 final public static형으로 쓴다.)
1. 상속 받을 수 있는 클래스의 수는 단 하나이다. 2. 접근제어자는 자식클래스가 부모클래스보다 넓거나 같아야 한다. [오버라이딩] 1. 메소드 호출 시에 오버라이딩 된 메소드가 우선적으로 호출된다. ex) class Human { String name; int age; public void getInfo() { System.out.println("name: "+name+"\nage: "+age); } } Class Student extends Human { int id; public void getInfo() {// 오버라이딩 System.out.println("name: "+name+"\nage: "+age+"id: "+id); } } public class InheritEx { public sta..