P.study
[Java] 객체지향의 특성과 예제
김부찌
2020. 5. 8. 13:26
오늘은 JAVA 코딩을 통한 객체 지향 프로그래밍 (OOP : Object Oriented Programming) 의 특징을 알아볼 것이다!
특징은 상속, 다형성, 추상화, 캡슐화, 정보은닉이 있으며 이것에 대한 간단한 예제를 실습해 보았다.
< 객체 지향 언어의 특징 >
-
상속 (JAVA는 단일상속만을 지원)
: 기존의 클래스를 이용해서 새로운 클래스를 만들어 변수와 메서드를 추가로 정의한 것
(객체들 사이의 계층적 구조를 이룰 수 있음)
**상속은 코드를 간결하게 하여 코드의 재사용성을 높이는 객체지향의 핵심 개념**
-
다형성
: 하나의 인터페이스를 이용해 서로 다른 구현을 제공함
-
메서드 오버로딩 : 한클래스 안에 같은 이름의 메서드를 여러개 정의하면서, 그 인자의 갯수나 유형을 자르게 해놓은 형태
-
메서드 오버라이딩 : 상속 관계에 있는 하위 클래스가 상위 클래스가 가지고 있는 메서드를 재정의 하는 것 (재정의된 메서드가 선언된 형태는 상위 클래스에서 선언된 것과 같음)
-
-
추상화
: 현실 세계에 존재하는 다양한 객체들의 공통된 특성을 모아 일반화해 놓은것
-
캡슐화
: 변수와 메서드를 하나의 추상화된 클래스로 묶는 과정을 의미함
(객체가 제공하는 메서드를 통해 객체를 이용하고, 데이터가 실제로 어떻게 처리되는지는 알 필요 없음)
-
정보 은닉
캡슐화된 변수나 메서드를 선택적으로 공개하거나 숨길 수 있음
-
# 코드
// 상속 extends
public class Car {
String name;
int currentGear;
public void changeGrear(int gear) {
System.out.println(" 기어를 "+ gear +"단으로 변경한다.");
currentGear = gear;
}
public String get_CurrentState() {
return name + "의 현재 기어 상태:" + currentGear;
}
}
public class Taxi extends Car {
int fare;
int passenger;
}
// 다형성
// 1.오버라이딩 >> 출력 : 기어를 2 변경후 고정한다.
public class MyTaxi extends Taxi {
public void changeGrear(int gear) {
System.out.println(" 기어를 " +gear+" 변경후 고정한다");
currentGear = gear;
}
public static void main(String[] args) {
MyTaxi taxi = new MyTaxi();
taxi.name = "24바 3982";
taxi.currentGear = 1;
taxi.fare = 6200;
taxi.passenger = 2;
taxi.changeGrear(2);
taxi.get_CurrentState();
}
}
// 추상화 (abstract)
abstract class Car {
public void CurrentState () {
System.out.println(" 움직이고 있습니다.");
}
}
class Bus extends Car {
String color;
public void Color(String color) {
System.out.println("버스는 "+color+" 입니다.");
}
}
public class MyBus {
public static void main(String[] args) {
Bus bus = new Bus();
bus.Color("초록색");
bus.CurrentState();
}
}
// 캡슐화 (은닉 private)
public class Car {
public String name;
private int currentSpeed;
public void start_Engine() {
System.out.println(name+"의 시동을 켠다.");
currentSpeed = 1;
}
private int CurrentSpeed() {
currentSpeed = currentSpeed * 10;
return currentSpeed;
}
public String get_CurrentSpeed() {
return name + "의 속도는 "+ CurrentSpeed();
}
}
# 구현모습
자바란 이런것이구나..ㅎㅎ 신기하당
앞으로 더 공부해야겠다!