6/22

HMS·2022년 6월 23일
0

객체지향

객체지향 3대원칙

  • 캡슐화
  • 상속
  • 다형성
  1. 캡슐화
  • 캡슐화 원칙 1,2
    private사용하여 클래스
  1. 상속
  • 상속의 목적, 장덤
    같은애들을 묶어서 필요한 애들만 추가하면 되게 만들
    추가만하면 모든 상속되는 클래스에 전달이 된다
    유지보수에 용이
    클래스의 구조를 만듦
  1. 다형성
  • 의미, 활용방법,...

필드

변수 선언 위치에 따라 구분
1. 클래스 변수 : 클래스 영역에 static키워드를 가짐
2. 멤버변수(인스턴트변수): 클래스영역에 선언 - 전역변수
3. 지역변수 : 클래스 영역이 아닌 메서드 생성자 초기화 블럭 내부에서 선언

캡슐화

private을 사용하여 외부에서 클래스 내부의 데이터에 접근하지 못하도록 막는것

메소드

오버로딩

한 클래스 내에서 파라미터 선언부가 다르고, 이름이 같은 메서드를 여러개 정의하는것
조건2가지
1. 메소드 이름이 같아야한다.
2. 매개변수 선언부가 달라야한다.
- 매개변수 타입 개수 순서


calcNumPrint() 괄호안에 암것도 안넣으면 매개변수 없는 메소드 출력 숫자를 넣으면 int 매개변수 있는 메소드 출력

System.out.println('a');
System.out.println(2);
System.out.println("hi");
System.out.println(true);

println(int num){
오버로딩을 통해서 같은 메소드명으로 실행 가능하게해줌
메소드 명은 똑같으되 매개변수만 다르면 실행하게 해주겠다

메소드 호출

.메소드명(소괄호);

getter/setter

this

모든 인스턴트 메소드에 숨겨진채 존재하는 지역변수로, 해당 객체의 주소값을 담고 있다.
this(메소드)는 생성자다
같은 클래스의 다른 생성자를 호출할때 사용

생성자

객체를 생성할떄 항상 실행되는것, 메소드 중에서 맨 처음 실행되는 메소드
객체의 초기화란 클래스가 객체를 생성/호출하였을때 객체의 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비를 하는것으로 일련의 준비단계

  • 생성자 규칙
    클래스에슨 반드시 생성자가 존재해야한다.
    인스턴트 생성시 딱 한번 호출된다.
    클래스 이름과 동일한 이름을 가진 메소드이다.
    반환형 존재하지않는다. return이 없다.
  1. 생성자의 역할은 무엇인가?
    객체를 생성하고 객체를 초기화함
  2. 생성자의 특징은 무엇인가?
    클래스명과 같은 메소드이고 반환형이 없습니다.
  • 생성자 종류
    기본생성자 (매개변수없는 생성자)
    매개변수 있는 생성자
    ex) Scanner sc = new Scanner(System.in);

상속

상속 - 상속의 특징
부모클래스의 생성자 상속 안됨, 하지만 자동으로 호출함.

  • 자식클래스 객체 생성시, 부모클래스 생성자가 먼저 실행
  • 자식클래스 생성자 안에서 부모클래스 생성자 호출을 명시하고 싶으면
    super()활용
    부모의 private 멤버는 상속은 되지만 직접접근불가
  • 자식 객체 생성시에 부모의 필드값도 전달받은 경우, 자식 생성자 안에서
    부모의 private 필드에 직접접근해서 대입 못함.
  • super()이용하여 전달받은 부모 필드값을 부모생성자 쪽으로 넘겨서 생성
  • setter, getter 매소드를 이용한 접근
    모든 클래스는 Object 클래스의 후손
  • Object클래스가 제공하는 메소드를 오버라이딩해서 메소드 재구현 가능.
    예시) java.lang.String 클래스의 equals()과 toString()

오버라이딩

  • 이름 매개변수개수 타입 리턴타입이 모두 동일해야한다
    private는 사용 불가능
    오버로딩은 이름만 같아도 됨

profile
안녕하세요

0개의 댓글