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번이상(모두)
|