P.study

[Java] 객체지향의 특성과 예제

김부찌 2020. 5. 8. 13:26

 

 

 

오늘은 JAVA 코딩을 통한 객체 지향 프로그래밍 (OOP : Object Oriented Programming) 의 특징을 알아볼 것이다!

특징은 상속, 다형성, 추상화, 캡슐화, 정보은닉이 있으며 이것에 대한 간단한 예제를 실습해 보았다.

 


 

< 객체 지향 언어의 특징 >

  • 상속 (JAVA는 단일상속만을 지원)

    : 기존의 클래스를 이용해서 새로운 클래스를 만들어 변수와 메서드를 추가로 정의한 것

    (객체들 사이의 계층적 구조를 이룰 수 있음)

    **상속은 코드를 간결하게 하여 코드의 재사용성을 높이는 객체지향의 핵심 개념**

  • 다형성

    : 하나의 인터페이스를 이용해 서로 다른 구현을 제공함

    1. 메서드 오버로딩 : 한클래스 안에 같은 이름의 메서드를 여러개 정의하면서, 그 인자의 갯수나 유형을 자르게 해놓은 형태

    2. 메서드 오버라이딩 : 상속 관계에 있는 하위 클래스가 상위 클래스가 가지고 있는 메서드를 재정의 하는 것 (재정의된 메서드가 선언된 형태는 상위 클래스에서 선언된 것과 같음)

  • 추상화

    : 현실 세계에 존재하는 다양한 객체들의 공통된 특성을 모아 일반화해 놓은것

  • 캡슐화

    : 변수와 메서드를 하나의 추상화된 클래스로 묶는 과정을 의미함

    (객체가 제공하는 메서드를 통해 객체를 이용하고, 데이터가 실제로 어떻게 처리되는지는 알 필요 없음)

    • 정보 은닉

      캡슐화된 변수나 메서드를 선택적으로 공개하거나 숨길 수 있음

 


# 코드

// 상속 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();
	}
}

 

# 구현모습

 

 

 


 

자바란 이런것이구나..ㅎㅎ 신기하당

앞으로 더 공부해야겠다!