객체지향 언어의 특징
1. 코드의 재사용성이 높다.
: 새로운 코드 작성시 기존 코드를 이용해 쉽게 작성가능
2. 코드의 관리가 용이
: 코드간의 관계를 이요애서 적은 노력으로 쉽게 코드변경 가능
3. 신뢰성 높은 프로그래밍을 가능하게 한다
: 제어자와 메서드를 이용해 데이터를 보호하고 올바른 값을 유지, 코드의 중복을 제거해 코드의 불일치로 인한 오작동 방지
클래스와 객체
* 클래스란?
: 객체를 정의해 놓은것이며 그 용도는 객체를 생성하는데 사용된다.
* 객체란?
: 실제로 존재하는것, 사물 또는 개념이며 객체가 가진 기능과 속성에 따라 용도가 다르다.
- 유형의 객체 : 스마트폰, 컴퓨터, 책 등..
- 무형의 객체 : 지식, 논리, 개념 등..
[클래스와 객체의 예]
객체와 인스턴스
클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate) 라고 하며 만들어진 객체를 클래스의 인스턴스(instance)라고 한다.
* 객체의 구성요소
객체는 속성과 기능 두 종류의 구성요소로 이루어져 있으며 일반적으로 다수의 속성과 기능을 갖는다. 그리고 객체가 가지고 있는 속성과 기능을 그 객체의 맴버라고 한다.
쉽게 자동차 예를들면 다음과 같다.
- 속성 : 크기, 길이, 높이, 색상, 바퀴수, 좌석수 등..
- 기능 : 전진, 후진, 브레이크 등...
자동차의 속성과 기능을 코드로 만들면 아래처럼 만들 수 있다.
1 2 3 4 5 6 7 8 9 10 11 | class Car { // 자동차의 속성 String color // 색상 String size // 크기 // 자동차의 기능 void power() {} // 자동차의 시동을 켜거나 끄는 기능 void forward() {} // 전진기능 void backwards() {} // 후진기능 } | cs |
* 인스턴스의 생성과 사용
클래스로부터 인스튼스를 생성하는 방법은 일반적으로 다음과 같다.
1 2 3 4 5 | 클래스명 변수명 = new 클래스명(); // 클래스의 객체를 생성후, 객체의 주소를 참조변수에 저장한다. ex) Car c = new Car(); | cs |
[예제 1]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | public class TvTest { // Tv테스트 클래스 public static void main (String[] args) { Tv t=new Tv(); t.power(); t.channel = 7; t.channelDown(); System.out.println("현재 채널은 = " + t.channel); // 인스턴스는 참조변수를 통해서만 다룰 수 있다. // 여기서는 Tv의 변수나 메서드를 사용하기 위해 t 라는 참조 변수를 이용해야 한다. } } class Tv { // TV 클래스 // TV의 속성(변수) String color; boolean power; int channel; // TV의 기능(메서드) void power() // 전원 온/오프 { power = !power; // boolean의 초기값은 false 여기서 이 메서드 호출시 true값 치환 } void channelUp() { ++channel; } // 채널 up void channelDown() { --channel; } // 채널 down } | cs |
[실행결과]
[예제 2]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | public class TvTest { // Tv테스트 클래스 public static void main (String[] args) { Tv t1=new Tv(); Tv t2=new Tv(); System.out.println("현재 t1 채널은 = " + t1.channel); System.out.println("현재 t2 채널은 = " + t2.channel+"\n"); t2 = t1; t1.channel =9; System.out.println("t1 채널 7로 변경 \n"); System.out.println("현재 t1 채널은 = " + t1.channel); System.out.println("현재 t2 채널은 = " + t2.channel); } } class Tv { // TV 클래스 // TV의 속성(변수) String color; boolean power; int channel; // TV의 기능(메서드) // boolean의 초기값은 false 여기서 이 메서드 호출시 true값 치환 void power() { power = !power; } // 전원 온/오프 void channelUp() { ++channel; } // 채널 up void channelDown() { --channel; } // 채널 down } | cs |
[실행결과]
'코딩 > Java' 카테고리의 다른 글
객체지향 3부 - 오버로딩, 생성자 (0) | 2016.09.11 |
---|---|
객체지향 2부 - 변수, 메서드 (0) | 2016.09.10 |
자바 오버로딩(Overloading) (0) | 2016.09.06 |
자바 - 이름 붙은 반복문 (0) | 2016.09.04 |
자바 - continue문 (0) | 2016.09.04 |