객체지향 프로그래밍?
객체지향 프로그래밍(Object-Oriented Programming)란 프로그램을 설계하는 개념이자 방법입니다. 많이 알고 있는 OOP가 되겠습니다. 특징으로는 캡슐화, 상속, 다형성 등이 있습니다.
객체(Object)란?
물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고, 식별이 가능하다는 것입니다. 즉 객체는 눈에 보이는 것들이라 할 수 있습니다.
캡슐화(Encapsulation)란?
캡슐화는 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감춰줍니다. 따라서 외부에 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있게 됩니다.
캡슐화를 사용하게 되는 예시로는 자동차에 들어가는 엔진이 바깥으로 노출되어 있다면, 사용자의 실수나, 운전을 하다 보면 엔진을 보호할 수단이 없게 되어 고장이 날 수 있게 됩니다. 따라서 캡슐화를 통해 엔진을 차량 안쪽으로 숨겨두게 합니다.
상속(Inheritance)란?
상속은 부모 클래스가 가지고 있는 메소드를 하위 객체에게 물려주어 하위 객체가 이를 사용할 수 있게 됩니다. 상속은 상위 객체를 재사용하여 하위 객체를 쉽고 빠르게 설계할 수 있도록 도와주고, 잘 개발된 객체를 재사용하여 새로운 객체를 만들기 때문에 반복되는 코드의 중복을 줄여주게 됩니다.
다형성(Polymorphism)란?
다형성은 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질입니다. 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해줍니다. Java에서는 다형성을 위해 상위 클래스 또는 인터페이스의 타입 변환을 허용합니다. 예를 들어 자동차를 구매하고 끼워져 있는 타이어가 가장 기본적인 타이어라 한다면 규격에 맞는 타이어들은 어떤 것이든 상관없이 장착이 가능한 것처럼 인터페이스 타입에는 여러 객체가 대입될 수 있습니다.
아래 코드 객체에 필드 내용을 다른 객체에서 사용할 수 있는 예시 코드입니다.
ex) 예. field 1번파일.
public class Field{
String name ="me";
String made ="mo";
}
public class FieldEx{
public static void main(String [] args){
Field a = new Field(); // FieldEx파일안에 Field의 변수를 끓고 오기위한. Field는 앞으로 a라고 부를꺼다 선언문 같은것(참조).
System.out.println("name" + a.name); //FieldEx에서 Field의 정한 이름 'a'와 Field의 작성된 'name'을 합쳐지며 값을 출력한다.
System.out.println("made" + a.made);// 요 내용도 같다.
}
}
생성자를 선언한 뒤 끓고 올수도 있다.
두번째 예시 코드입니다.
public class Field{
String name;
String made;
public Field(String name, String made){ // 생성자 선언
this.name = name;
this.made = made;
}
}
public class FieldEx{
public static void main(String [] args){
Field ab = new Field("me", "mo"); // 다른파일에 생성된 생성자를 끌고 각각의 내용을 부여한다
System.out.println(ab.name + "+ " + ab.made); // 출력한다. name + made
}
}
'Java > Java' 카테고리의 다른 글
자바[Java] Getter와 Setter 메소드란? (0) | 2021.10.12 |
---|---|
자바[Java] 상수 final란 (0) | 2021.10.12 |
자바[Java] 메소드란? (0) | 2021.10.08 |
자바[Java] 데이터 타입의 기본 타입과 참조 타입에 대한 개념 정리 (0) | 2021.10.06 |
자바[Java] 제어문의 조건문과 반복문이란 개념 정리 (0) | 2021.10.05 |