교육 (Today I Learned)/SeSAC

SeSAC 10일차 / 자바 기초(오버라이딩, 인터페이스)

Bay Im 2023. 7. 29. 00:31

 

SeSAC 10일차(2023-07-28)
자바 기초(오버라이딩, 인터페이스)

오버라이딩

 

- 오버라이딩 하기

 

ex)

public class Member {

           public void setPoint(int point) {

                      sout(point + “적립”);

           }

}

 

public class Seller extends Member {

           @Override

           public void setPoint(int salePrice) {

                      super.point += salePrice / 100;

                      setRat();

           }

}

 

public class RunExam {

           psvm

                      Seller seller = new Seller(1, “다팔아”);

                      seller.setPoint(8000);

}

=> Member 클래스 setPoint 메소드 내용이 실행되지 않고 Seller의 메소드가 사용

 

 

 

- super를 사용하여 수퍼클래스에 정의된 기능도 실행

 

ex)

super.setPoint(salePrice / 100);

=> Member setPoint() 기능이 실행

 

 

 

- 수퍼클래스에서 실행해도 결국 인스턴스인 자식클래스 오버라이딩을 실행

 

ex)

public class Member{

           public void setPoint(int point) {

                      setRat();

           }

}

 

public class Seller extends Member {

           @Override

           protected void setRat() {

                      Code

                     

           }

}

 

 

 

- 추상 메소드

아무 기능이 정의되지 않고 이름만 존재하는 메소드

오버라이딩의 목적으로 주로 사용

abstract로 선언하여 이름만 정의

 

ex)

public abstract void setpoint(int point);

 

 

 

- 추상 클래스

추상 메소드를 가질 수 있는 클래스

abstract를 선언하고 클래스 정의

인터페이스와 유사할 수 있지만 클래스라는 점에서 큰차이 존재

 

ex)

public abstract class AbMember{

          

}

 

 

 

 

 

인터페이스

 

- 자바의 인터페이스

추상 메소드와 상수로만 이루어진 정의

(추상 클래스와 비슷하지만 필드나 일반메소드 정의 불가)

interface로 정의

 

 

 

- 인터페이스의 맴버

인터페이스의 메소드: public abstract 타입, 생략 가능

인터페이스의 상수: publix static final 타입, 생략 가능

 

 

 

- 인터페이스의 사용

인스턴스로 바로 생성 불가능 (익명 클래스 형태로 생성 가능)

상속을 통해서 사용

다중 상속이 가능

 

 

 

- 인터페이스 정의

추상 메소드와 정적 상수만 정의

기본적으로 외부에서의 접근으로 사용하므로 접근자는 public

인터페이스의 실행 클래스 내부에서 정의하는 것이 좋음

 

abstract public 생략 가능

public static final 생략 가능

 

기본 형태)

접근지정자 interface 인터페이스이름 {

           정적 상수

           추상 메소드

}

 

ex)

public interface onDealing {

           int code = 100;

 

           abstract public Boolean onAgreement();

           void onDeal(int dealPrice);

}

 

 

 

- 인터페이스 사용

implements 상속을 통해서 인터페이스 생성(초기화) 또는 익명클래스로 생성

추상메소드는 반드시 오버라이딩 되어야함

 

 

 

- 인터페이스 메소드 실행

인터페이스 상속 인스턴스 또는 추상 클래스의 인스턴스를 실행 클래스에 제공

(set 메소드를 활용 추천)

실행 클래스에서 인터페이스의 메소드를 실행

 

 

 

 

 

오늘의 실습 코드: https://github.com/yubin-im/SeSAC/tree/302d9f5dff4fde732c59bc152886c8127a939800/20230728