1. 클래스의 개념 : 클래스란 객체를 만들어 내기 위한 설계 혹은 틀이다.


2. 객체의 개념 : 객체란 클래스에 선언된 모양 그대로 생성된 실체를 객체라 부르며 클래스의 인스턴스(instance)라고도 부른다. 객체와 인스턴스는 구별 없이 사용한다.


3. 객체지향이란 : 객체 지향이란 컴퓨터가 산업 전반에 활용됨에 따라 실세계에서 발생한 일들을 프로그래밍 해야 하는 경우가 많아지게 되고 이에 따라 실세계의 일을 보다 쉽게 프로그래밍 할 수 있는 방법이 절차 지향적인 언어와 비교되는 객체 지향적 언어이다.


4. 객체정의 예제


객 체

상 태

동 작

충전상태,소리,발열

발광하다,충전하다

인간

배고픔,아픔

소리지르다,섭취하다


5. 객체생성 예제(프로그램 4-1 소스코드, 실행결과, 주석: 클래스 구성, 객체 생성 순서 설명)


package exClass1;


public class Circle {


int radius; //속성

String name;

public double getArea(){ //메소드

return 3.14*radius*radius;

}



public static void main(String[] args){

//1. 객체생성

Circle pizza = new Circle(); //pizza 객체 생성

//2. 필드와 메소드에 도트 연산자.을 이용해서 접근

pizza.radius = 10;

pizza.name = "콤비네이션 피자";

double area = pizza.getArea(); //피자면적 계산

//3. 객체내용 출력

System.out.println(pizza.name + "의 면적은 " + area);

//2. 도넛을 만들어보자

Circle donut = new Circle();

donut.radius = 2;

donut.name = "까데기";

area = donut.getArea();

System.out.println(donut.name + "의 면적은 " + area);

}


}



클래스는 필드와 메소드로 구성되어지며 객체를 생성할때에는 객체를 생성한 뒤 해당 필드와 메소드에 도트 연산자 . 을 이용하여 접근하고 마지막으로 객체의 내용을 출력하면 된다.


6. 객체생성 예제2 (프로그램 4-2참조. rect객체, book객체를 생성하는 코드, 결과, 주석)


package exClass1;


public class Rectangle {

int width;

int height;

int getArea(){

return width*height;

}

public static void main(String[] args){

//1. 객체 생성

Rectangle nemo = new Rectangle();

//2. 필드와 메소드에 접근

nemo.width = 4; //너비와 높이의 초기값 지정

nemo.height = 5;

int area = nemo.getArea();

//3. 객체 내용 출력

System.out.println("해당 사각형의 면적은 " + area);

Rectangle book = new Rectangle();

book.height = 15;

book.width = 10;

System.out.println("책의 size = " + book.getArea() + "입니다.");

}


}



7. 생성자의 개념 : 생성자란 객체가 생성될 때 초기화를 위해 실행되는 메소드이다.


8. 생성자의 특징 : 

생성자의 특징은 다음과 같이 여러가지가 있다.

(1) 이름이 클래스 이름과 동일하다.

(2) 여러 개 작성할 수 있다.

ex) public class Circle{

public Circle(){...}        //매개 변수가 없는 생성자

public Circe(int r, String n){...}        //2개의 매개 변수를 가진 생성자

}

(3) 객체를 생설할 때 한 번만 호출된다.

(4) 리턴 타입을 지정할 수 없다.

(5) 생성자는 초기화 작업을 위하여 사용한다.


9. 생성자의 예제(4-3 소스코드, 결과, 주석)


package exClass1;


public class Circle {


int radius; //속성

String name;

//생성자 이름은 클래스 이름과 동일하다.

public Circle(){ //매개 변수가 없는 생성자

radius = 1; name = ""; //radius의 초기값은 1

}

//생성자는 리턴 타입이 없다. - 기본 생성자 

public Circle(int r, String n){ //매개 변수를 가진 생성자

radius = r; name = n; //생성자는 radius와 name필드 초기화

}

public double getArea(){ //메소드

return 3.14*radius*radius;

}



public static void main(String[] args){

//1. 객체생성

Circle pizza = new Circle(10,"자바피자"); //Circle 객체 생성, 반지름10

double area = pizza.getArea(); //피자면적 계산

//3. 객체내용 출력

System.out.println(pizza.name + "의 면적은 " + area);

//2. 도넛을 만들어보자

Circle donut = new Circle();//Circle 객체 생성, 반지름 1

donut.name = "도넛피자";

area = donut.getArea();

System.out.println(donut.name + "의 면적은 " + area);

}


}



10. 생성자와 this예제 (프로그램 4-5 소스코드, 결과(출력된 이유), (주석)생성자 함수 몇개, 특징(매개변수의 개수와 타입))


package mypractice;


public class Book {


String title;

String author;

void show() {

System.out.println(title + " " + author);

}

public Book(){

this("", "");

System.out.println("생성자 호출됨");

}

public Book(String title){

this(title, "작자미상");

}

public Book(String title, String author){

this.title = title;

this.author = author;

}

public static void main(String[] args) {


Book javaBook = new Book("Java", "황기태");

Book bible = new Book("Bible");

Book emptyBook = new Book();

bible.show();


}


}





생성자 함수는 매개변수의 개수와 타입을 찾아서 실행하는데 매개변수의 개수와 타입은 달라야한다.


11. static 멤버의 선언방법, 특징(표 4-2 참조)


static 멤버 선언방법 : class 내의 필드와 변수 앞에 static을 붙여서 사용

ex)    class Sample{

static int m;

static void g(){...}

}

특징 : static 멤버는 클래스당 하나 생성(공간적 특성), 클래스 로딩 시에 멤버 생성(시간적 특성), 동일한 클래스의 모든 객체들에 의해 공유된다.(공유의 특성)


12. 예제 4-11 소스코드, 실행결과


package exStatic;


class Calc{

public static int abs(int a){

return (a>0) ? a : -a;

}

public static int max(int a, int b){

return (a>b) ? a : b;

}

public static int min(int a, int b){

return (a>b) ? b : a;

}

}


public class CalEx {


public static void main(String[] args) {

/*클래스이름.멤버함수(abs) 가능한 이유 : abs 함수가 static으로 선언됨

static 멤버는 클래스 이름으로 접근이 가능함.*/

System.out.println(Calc.abs(-5));

System.out.println(Calc.max(10, 8));

System.out.println(Calc.min(-3, -8));


}


}



'basic > Java 8' 카테고리의 다른 글

[Java] Exception  (0) 2018.08.07
5. 상속  (0) 2017.05.12
3. 반복문과 배열 그리고 예외처리  (0) 2017.03.31
2. 자바 기본 프로그래밍  (0) 2017.03.14
1. 자바시작  (0) 2017.03.07

+ Recent posts