Java_객체지향

song·2023년 10월 12일

Java

목록 보기
15/36

객체지향 언어 특징

  • 코드의 재사용성이 높다.
    • 클래스를 사용.
  • 코드의 중복 제거
    • 중복코드 같은게 있으면 클래스로 만들어서 재사용
  • 코드의 관리가 쉽다.
    • 클래스 하나로 코드 재사용하기 때문. 클래스 하나만 관리하면 되기 때문에 관리가 쉬움

핵심 개념

  • 캡슐화
    • 데이터 보호
    • 필드와 메서드를 하나로 묶는 것
    • 은닉화 : 객체의 세부 내용이 외부에서 보이지 않기 때문에 외부에서 데이터에 직접 접근하는 것을 방지
    • 직접 값을 가져오고, 수정하지 못하게 한다.
      public으로 놓으면 직접 건드릴 수 있다.
      private으로 놓으면 외부에서 힙영역 안에 있는 인스턴스를 건드릴 수 없다.
      그래서 getter 매서드를 이용해서 값을 불러오고, setter 매서드를 이용해서 수정한다.
      System.out.println(Car.color); (직접적으로 불러오기)
      System.out.println(Car.getColor()); (메서드를 이용해서 불러오기)
      class Car{
      	private String color;
          
          String getColor(){
          	return color;
          }
      }
  • 상속
    • 코드의 재사용
    • 자식클래스가 부모클래스의 특징과 기능을 물려받는 것.
    • class 자식클래스명 extends 부모클래스명{}
    • 클래스를 상속받아서 수정해서 사용할 수 있기 때문에 중복코드를 줄일 수 있다.
    • 부모클래스 수정 한 번으로 모든 자식클래스들이 수정되는 효과 (관리가 쉬움)
    • 다중상속 안됨. 한번에 하나만 상속가능.
  • ★★다형성
    • 제일 중요한 개념.
    • 하나의 타입에 여러 객체를 대입 가능.
    • 상속관계일때만 사용 가능.
    • Children c = new Children();로 만들어야 하지만
      Parent c = new Children(); 이렇게 상위 클래스인 Parent로 만들어도 된다.
      Children c = new Parent(); 물론 이렇게 하위 클래스인 Children으로는 만들 수 없다.
    • overriding
      • 부모한테 있는 메서드를 똑같이 자식에서 다시 쓰는 것. (재정의)
    • overloading
      • 부모한테 있는 메서드를 자식에서 매개변수를 추가해서 다시 쓰는 것.
  • 추상화 (abstract)
    • 핵심적인 부분만 만들어놓기 (불필요한 부분을 숨긴다)
    • 객체가 수행해야 하는 핵심적인 역할만 규정해두고, 실제적인 구현은 해당 인터페이스를 구현하는 객체에서 함.
    abstract class tmp{
    	abstract void ttt();
    }
  • 인터페이스
    • Java는 다중상속이 지원 안하지만 필요한 경우가 있기 때문에 인터페이스라는 일종의 추상 클래스를 사용한다.

객체

  • 사람 눈에 보이는 모든 것들이 객체
  • ex) 실제 우리 앞에 있는 자동차(객체)가 있으면, 자동차(객체)의 속성(생상, 제조사, 모델명)들과 기능(시동, 전진, 후진, 멈춤)들로 구성되어 있다.
    • 자동차마다 공통적으로 갖는 속성이나 기능이 있다면, 공통적인 부분을 가지고 있는 상위 개념을 정의 할 수 있는 데 그게 '클래스'다.
    • 각각의 차마다 가지고 있는 속성이나 기능은 따로 클래스를 만들고, 공통적인 부분을 가지고 있는 상위 개념을 상속받아서 사용한다.

클래스

  • 객체지향에서 중요한 개념

  • 클래스는 기본 설계도라고 생각하면 된다.

  • 클래스는 생성하려는 객체의 속성과 기능을 정의하고 있어야 한다.

  • ex) car라는 클래스를 생성해서 인스턴스 변수(생상, 제조사, 모델명), 메소드(시동, 전진, 후진, 멈춤)로 구성한다.
    car 클래스를 이용해서 Car의 속성들을 가지고 있는 별도의 자동차들을 만들수 있다.

  • 생성자 커스텀하고 싶으면 비어있는 생성자도 만들어야 한다.

    class A{
    	public void static main(String[] args){
      	Car c = new Car("흰색", "싼타페", "기아");
          Car c2 = new Car("검정색", "제네시스", "현대");
      }
    }
    
    class Car{
    	public Car(){} <- 원래는 생략 가능하나 밑에처럼 커스텀 하고 싶다면 만들어야 비어있는 것도 만들어야 함. 
      public Car(String color, String model, String brand){
      	this.color = color;
          this.model = model;
          this.brand = brand;
      }
    }
profile
계속 나아가기

0개의 댓글