반응형 Spec UP - Backend/나도코딩의 자바기본편58 Chap_08.인터페이스(Interface) 앞서 배운 추상클래스는 완성되지 않은 클래스였다고 한다면, 인터페이스는 뼈대만 제공하는 구조이다. 상속(extends) : 부모를 하나만 가질 수 있는 단일 상속만 가능한 특징이 있다. 추상클래스 시간에 생성한 FactoryCam과 SpeedCam 클래스에 아래 메소드를 추가한다고 생각해보자. 1) detect() : 화재 or 사고 감지 기능 2) report() : 화재 or 사고 신고 기능 이처럼 각 클래스 별로 겹치는 메소드를 선언하게 되면 관리가 어려워진다. 이를 인터페이스를 통해 코드의 중복을 줄이고 개선된 구조로 만들 수 있다. 인터페이스는 [인터페이스를 생성할 패키지명] 마우스 우클릭 -[new]-[JavaClass]-[Int 위와 같이 Reportable 이라는 인터페이스를 생성하고 re.. 2023. 5. 10. Chap_08. 추상 클래스(AbstractClass) 데이터 추상화(Data Abstraction)는 불필요한 정보는 숨기고 꼭 필요한 정보만 공개하는 과정을 말한다. abstract 키워드를 통해 추상클래스와 추상메소드를 생성할 수 있다. 1) 추상클래스 : 아직 완성되지 않은 클래스이기 때문에 객체로 만들수 없고 클래스를 상속해서 구체적으로 동작을 정의해야만 객체로 만들 수 있다. 2) 추상메소드 : 추상클래스 또는 인터페이스에서 사용가능한 껍데기만 있는 메소드이다. 추상클래스는 아래와 같이 abstract 키워드를 추가하여 생성한다. public abstract class Camera { ... } 위와 같이 추상클래스 Camera를 생성하고 다른 클래스에서 Camera 객체를 생성하려고 하면 아래와 같이 오류가 발생된다. 추상 클래스는 아직 완성되지.. 2023. 5. 10. Quiz. 클래스를 이용하여 햄버거를 자동으로 만드는 프로그램을 작성하시오 클래스를 이용하여 햄버거를 자동으로 만드는 프로그램을 작성하시오. 1. 햄버거의 종류는 햄버거, 치즈버거, 새우버거 3가지이다. 2. 각 버거는 각각의 클래스로 생성한다. 3. 버거 이름을 담기 위한 name 변수를 정의한다. 4. 재료 정보를 표시하는 cook() 메소드를 정의한다. - 햄버거 : 양상추, 패티, 피클 - 치즈버거 : 양상추, 패티, 피클, 치즈 - 새우버거 : 양상추, 패티, 피클, 새우 5. 공통부분은 상속 및 메소드 오버라이딩으로 처리한다. 6. 모든 클래스는 하나의 파일에 정의한다. package chap_07; public class _Quiz_07 { public static void main(String[] args) { HamBurger[] hamBurgers = new .. 2023. 5. 3. Chap_07. 열거형(Enum) 특수한 형태의 클래스인 열거형에 대해 알아보자. 열거형 (Enum) : 상수들의 묶음으로 아래와 같은 예시들을 열거형으로 만들 수 있다. 1월~12월 달력을 볼 때 고정된 값 : JAN, FEB, MAR ... 옷사이즈 : S, M, L, XL OS 종류 : WIN10, WIN11, MACOS, LINUX ... 해상도 : HD, FHD, QHD, UHD enum Resolution { HD, FHD, UHD } enum 열거형이름 { 열거형의 값 나열 } Resolution이라는 열거형은 HD,FHD,UHD라는 세개의 값을 가진다. - 보통 열거형의 값들은 대문자로 정의한다. 열거형 데이터의 값을 가져올때에는 열거형이름.값 의 형태로 가져온다. (Resolution.HD) 아래와 같이 switch 문을.. 2023. 5. 3. Chap_07. Final 변수 앞에 final을 붙여서 상수로 선언할 수 있다. Constants 상수 = 변하지않는 값 https://nossodia.tistory.com/186 Chap_01. 자료형과 변수 DataTypes 자료형 문자형, 숫자형, 불린(참/거짓) Variables 변수 int, double, float, long char, String boolean Comments 주석 //한줄 주석 (단축키 ctrl+/ ) /* 여러줄 주석 */ (단축키 ctrl + shift + / ) Constants 상수 변수 앞 nossodia.tistory.com 이번 시간에는 final을 이용하는 사례에 대해 알아보자. final 변수 : 변수 값 변경 불가 final 메소드 : 메소드 오버라이딩 불가 final 클래스 : .. 2023. 5. 2. Chap_07. Reference 참조 기본 자료형 (Primitive Data Types) int, float, double, long, boolean ... 등 소문자로 시작되는 자료형이다. 기본 자료형에 아무 값도 지정하지않은경우 기본값은 0이다. 가지고 있는 메소드가 없다. 참조 자료형(Non-Primitive, Reference Data Types) String, Camera, SpeedCam .. 대문자로 시작되는 자료형이다. (클래스명 포함) 참조 자료형에 아무값도 입력하지 않은 경우엔 null 로 표현한다. 메소드를 가질 수 있다. 아래 예제를 통하여 기본자료형과 참조자료형의 차이를 이해해보자. 먼저 기본자료형인 int 예제를 살펴보자. b=a 실행 시 변수 b에 a의 값을 적용하고, 이후 a와 b의 값을 변경했을때 a와 b는 .. 2023. 5. 2. Chap_07. Super 이전 시간에 학습한 상속 예제에서 super를 이용해 부모클래스의 메소드와 생성자를 호출하는 방법에 대하여 공부해보자. 상속 시간에 기본 카메라(Camera), 화재감지카메라(FactoryCam), 속도감지카메라(SpeedCam)을 생성하였다. 그리고 각각 Camera 클래스를 부모클래스로, FactoryCam과 SpeedCam 클래스를 자식클래스로 설정하였다. 부모클래스인 Camera에는 takePicture(), recordVideo(), showMainFeature()메소드가 있었다. public class Camera { public String name; public Camera() { this.name = "카메라"; } //카메라의 기본 기능 메소드로 정의 public void takePic.. 2023. 4. 28. Chap_07. 다형성 다형성 : 하나의 클래스나 함수가 다양한 방식으로 동작가능한것. 상속 시간에 기본 카메라(Camera), 화재감지카메라(FactoryCam), 속도감지카메라(SpeedCam)을 생성하였다. 그리고 각각 Camera 클래스를 부모클래스로, FactoryCam과 SpeedCam 클래스를 자식클래스로 설정하였다. 이는 곧 아래와 같이 IS - A 관계라고 할 수 있다. FactoryCam is a Camera : FactoryCam 은 Camera이다. SpeedCam is a Camera : SpeedCam 은 Camera이다. 하지만 반대로 " Camera는 FactoryCam이라고 할수 있는가? " 혹은 " Camera는 SpeedCam인가? " 라고 질문한다면 아니라고 할 수 있다. 아래 예를 통해 생.. 2023. 4. 28. Chap_07. 메소드 오버라이딩 메소드 오버라이딩 : 자식클래스에서 부모 클래스의 메소드를 덮어쓰기(재정의)하는 것이다. 이전 시간에 학습한 상속을 이용하여 메소드오버라이딩을 이해해보자. 상속 시간에 기본 카메라(Camera), 화재감지카메라(FactoryCam), 속도감지카메라(SpeedCam)을 생성하였다. 그리고 각각 Camera 클래스를 부모클래스로, FactoryCam과 SpeedCam 클래스를 자식클래스로 설정하였다. 그런데 각 카메라의 기능을 출력하는 메소드를 추가로 생성한다고 생각해보자. 부모클래스인 Camera 클래스 내에 showMainFeature() 메소드를 추가로 생성하였다. showMainFeature() 호출 시 각 클래스에 정의되어있는 name 변수와 해당 카메라의 주요기능을 출력하도록 하였다. 그리고 아래.. 2023. 4. 28. Chap_07. 상속 상속: 부모클래스에서 제공되는 것을 자식 클래스에서 상속받아 사용하는 것이다. 상속은 하나의 부모 클래스로부터만 상속 받을 수 있는 제약이 있다. 상속은 자식 클래스 정의 뒤에 extends 부모클래스 명을 붙여 정의할 수 있다. 해당 내용을 학습하기 위해 하위패키지를 생성해보자. 참고로 인텔리제이 상단 [Code]-[Generate]-[Constructor]를 선택하거나 인텔리제이 화면내에서 Alt+Insert 동시에 누른 후 [Constructor]를 선택하면 자동으로 생성자를 만들 수 있다. 우선 실습중인 chap_07 패키지 안에 새로운 camera 패키지를 생성하였다. camera 패키지 내에 아래와 같이 Camera, FactoryCam, SpeedCam 클래스를 생성하였다. - 일반 카메라,.. 2023. 4. 28. 이전 1 2 3 4 5 6 다음 반응형