1. 객체지향의 주요 특성.
 1) 추상화 (Abstraction)
 2) 캡슐화 (Encapsulation)

 3) 상속화 (Inheritance)
  - 자바는 단일 상속으로 1개의 상위 클래스로부터 상속받을 수 있다. (역학 조사로 Maintanance에 좋지만 현실적으로 단일 상속을 사용하지 않는다. extends는 한번 사용하지만, 인터페이스(가상클래스)를 활용한다.)

 

C++ 

Java 

C# 

부모

 Base

Super 

base 

 표현

  :

 extends 

 

 자식

 Derived

 다중상속

 sub

단일상속

 

 

 
  - TwoD extends ThreeD : 생성자로 TwoD를 생성할때 먼저 부모클래스인 ThreeD를 메모리 heap에 올린다.
  - 자식 주소로 부모를 접근하면 상속, 부모 주소로 자식을 접근하면 다형성 이다.
  - class와 class, interface와 interface 간에는 extends, class와 inteface는 implements(동종간에는 extends,이종간에는 implements)
  - 관계    
    i) "is a"  : ex) 오토바이 -> 탈것
    ii) "has a"  ex) 주방 -> 냉장고
  - 상속이 되지 않는 것.
    i) private 선언 된 것은 상속되지않는다.
    ii) static 역시 상속되지 않는다.
    iii) 생성자는 상속되지 않는다.
       - 자식이 부모를 생성하려면 this메소드와 같은 형식의 super()를 사용한다. (마찬가지로 첫줄에 쓴다)
    iV) Overshadow 변수(클래스 변수와 같은 이름의 변수를 사용), Override 메소드 는 상속되지않는다. 자식 것을 쓴다.
       - super()를 사용하여 해결 할 수 있다.
       - String 형은 자체적으로 static 이기 때문에 this()나 super()이용해 접근할 수 없다.
 4) 다형성 (Polymorphism)

 
 
 
ps.----------------------------------------------------------------------------------------
- Object는 모든 객체들의 필수 요소의 집합이다. (원형이다.)
 
- 객체 비교에 대하여
   1. ==, !=
     1) value type -> 값비교, (su==num)
     2) Reference type -> 주소비교
     3) String type --> 값비교(new 없을 때), 주소비교(new 사용) //보통 String은 equals()를 사용한다.
   2. equals()
     1) value type --> 해당없음 (su.equals(num))
     2) Reference type --> 주소비교
     3) String type --> new와 관계없이 값비교
 

1. class

 1) 분류라는 의미의 Classification에서 왔다.

 2) Data와 Functions을 가지고있는 데이터 구조(Data structure)이다.


2. object

 1) 속성(property, state, attribute) : variable constants

 2) 행위(behavior) : method


3. 객체지향의 주요 특성.
 1) 추상화 (Abstraction) : 모델링 과정

 2) 캡슐화 (Encapsulation) : 중요한 부분을 외부로인한 접근과 변경으로부터 보호하기위함.
  - MS : Visibility(은닉)
  - Java : Accessibility(접근) : public / private
  - get/set : private 변수에 접근하기 위해 셋터와 겟터를 이용한다.
  - this : 멤버변수를 사용 (지역변수와 멤버변수명이 같을 때 멤버변수를 지칭하기위해 사용한다.)
 


 3) 상속화 (Inheritance)
 4) 다형성 (Polymorphism)

4. 생성자 : Allocating memory 
 1) 멤버 변수의 초기화는 생성자가 해야 한다.
 2) 특별한 메소드이다. : 기본적으로 생성자 메소드는 생략되어있다. : 
  - 리턴타입이 없다. 
  - 이름이 정해져있다(클래스이름)
  - new 와 함께만 사용할 수 있다.
 3) 정의 된 기본 생성자를 새로 정의 하는것 : 오버라이딩 (Overriding) 

public class ConstructorDemo2 {

public static void main(String[] args) {

Person1 p = new Person1("김태형", 27, 100.0);

Person1 p1 = new Person1("마이클", 28);

}

}

 public class Person1 {

private String name;

private int age;

private double salary;

public Person1(String name, int age, double salary){ // 기본 생성자의 오버라이딩.

this.name = name;

this.age = age;

this.salary = salary;

}

public Person1(String name, int age){ // 오버로딩

this.name = name;

this.age = age;

}

}

 기본 생성자의 경우는 오버라이딩(Overriding)과 오버로딩(Overloading) 모두 다 필요할 때가 있다.



4) this메소드

  - 생성자 내부에서 생성자를 호출 할 때 사용하는 것으로, this메소드는 생성자 안에서만 사용해야하며 블록의 첫줄에 써야한다.

 public class Person2 {

private String name;

private int age;

public Person2(){

//System.out.println("나 기본생성자.");

this("unknown",19);

}

public Person2(String name){this(name,19);}

public Person2(int age){this("unknown",age);}

public Person2(String name, int age){

this.name = name; this.age = age;

}

publi void main(String[] args){

Person2 p = new Person2();

}

}

 생성자 내에서 생성을 하면 또다른 주소가 생성되기 때문에 사용 할 수 없다. 그래서 this메소드를 사용한다.

ex)






ps.-------------------------------------------------------------
- main 함수가 없는 클래스는 스스로 단위 test(JUnit)를 통해 문제가 있는지 검사하게 된다. 
- 터미널에서 직접 컴파일을 할 경우 main 함수가 없는 클래스 부터 컴파일을 해야했지만 현재는 main함수가 포함된  클래스만 컴파일 해도 자동으로 모든 클래스 들을 컴파일을 해 준다.
- System.exit(-1);  //자바 프로그램 강제종료
- Java SE 에서 String Parsing 하는 방법 3가지
  1) String.split();
    - 
  2) java.util.StringTokienizer class
  3) Scanner class

 for (int i = 0; i < this.array.length; i++) {

String line = this.scan.nextLine().trim();

String [] array = line.split("\\s+");  //+는 1번 스페이스가 1개 이상이면 짜른다. ?는 0또는 1개, *는 0번 또는 1번이상(모두) 


'Programming > JAVA' 카테고리의 다른 글

자바 객체지향의 특징3 (다형성,Overriding)  (0) 2011.03.24
자바 객체지향의 특징2 (상속화)  (1) 2011.03.24
자바 메소드(method)  (3) 2011.03.24
자바 배열이란?  (2) 2011.03.24
자바 제어문(조건/반복/분기)  (2) 2011.03.24

+ Recent posts