Object Orient Programming

예제코드에서 다운로드는 첫 페이지참조
각각의 실습코드는 SUB에 해당하는 폴더를 참조하세요.

기초문법a_BasicType

클래스 생성A, B

 선언위치는 어디도 될 수 있습니다.B
      
    

생성자C

class Class1 {  
  Class1(int val) { ... }  // 생성자 : 클래스 이름과 같은 이름의 함수(메소드) >> 생성과 함께 수행
}

Class1 c1 = new Class1(1);  // 생성시 호출      

메모리 공유D : Static

class Class1 {  
  static int val = 1; // 메모리 공유
}

thisE

class Class1 {  
  int val;
  this.val = ...  // 자기 자신을 가리킴
}

클래스 배열F

Class1[] arr1 = new Class1[5];

InterfaceG

'객체지향'코딩은 코딩 속 대상을 인간의 인지와 최대한 흡사하게 구성하여 생산성을 향상시킵니다. 문제는 자바가 다중상속을 지원하지 안되기 때문에 발생합니다.
 예를들어, "먹는다."는 동작은 인간 뿐이 아니라 대부분의 생물군에서 나타날 수 있는 특징입니다. 이를 일일히 구현 할 것인지, 아니면 대표행동을 만들어 놓고 상황봐가며 갈아끼울 것인지 고민해봐야 합니다. 여기서 인간의 인지와 비슷하게 코딩하려면 동작에 대한 정의도 필요하다는 것을 알 수 있습니다. 이를 염두하면 어떤 것을 class로 선언 할 지, 어떤 것을 interface로 선언 할 지 명확해집니다.

상속b_Extends

기본 문법A

class Parent { ... }
class Child extends Parent { ... }

오버라이딩B

class Parent               { String str = "Parent"; }
class Child extends Parent { String str = "Child";  }

생성B2

Parent pa = new Parent();
Child ch = new Child();
Parent pc = new Child();
Child cp = new Parent(); // 에러 : 단골 다형성 문제

superC

super.value = 1;// 부모의 필드 접근
super.function();// 부모의 메소드 호출
super(); // 부모의 생성자 호출

접근제어자D

접근제어자 기호 설명
private - 본인만 접근할 수 있음
protected # + 상속받은 클래스도 접근가능
~ package protected: 패키지 안에서 자유
public + 아무나 접근

추상클래스E

static abstract class myClass {
  abstract void foo();
}

인터페이스 상속F

interface Inter1 { ... }
interface Inter2 { ... }
class Class1 implements Inter1 { ... }
class Class2 implements Inter1, Inter2 { ... }

포함관계 확인G

static class A { ... }
static class B extends A { ... }
A a = new A();
B b = new B();
if(b instanceof A) { ... } // true
if(a instanceof B) { ... } // false