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 |