2023/JAVA_나도코딩 강의 공부 9

Super

_15_Super 필요성과 사용법을 단계별로 코드를 수정해가며 확인해보자. [가 정] 공장 카메라에서는 동영상을 녹화함과 동시에 화재 감지 기능이 실행되고 과속 단속 카메라에서는 사진 촬영과 동시에 속도 측정과 번호판 인식 기능이 실행된다고 가정하자. [단계 1] 1. Camera.class package chap_07.camera; public class Camera { // 부모 클래스 public String name; public Camera() { // 생성자 this.name = "카메라"; } public void takePicture(){ // 사진 촬영 System.out.println(this.name + " : 사진을 촬영합니다."); } public void recordVideo()..

다형성

_14_Polymorphism (다형성) https://ruhaharu1107.tistory.com/14 메소드 오버라이딩 _13_MethodOverriding ( 메소드 오버라이딩) 메소드 오버라이딩 자식 클래스에서 부모 클래스에 있는 메소드를 덮어쓴다.(재정의) 같은 이름의 메소드임에도 불구하고 객체마다 다른 기능을 하게 된다 ruhaharu1107.tistory.com 카메라 패키지안에 있는 세 가지 클래스(Camera.class, FactoryCam.class, SpeedCam.class)는 위의 포스팅과 동일하다. class Person : 사람 class Student extends Person : 학생 (학생은 사람이다. Student is a person) class Teacher exte..

메소드 오버라이딩

_13_MethodOverriding ( 메소드 오버라이딩) 메소드 오버라이딩 자식 클래스에서 부모 클래스에 있는 메소드를 덮어쓴다.(재정의) 같은 이름의 메소드임에도 불구하고 객체마다 다른 기능을 하게 된다. 1. 부모 클래스(Camera) package chap_07.camera; public class Camera { // 부모 클래스 public String name; public Camera() { // 생성자 this.name = "카메라"; } public void takePicture(){ // 사진 촬영 System.out.println(this.name + " : 사진을 촬영합니다."); } public void recordVideo(){ // 동영상 녹화 System.out.print..

상속

1. Camera.class ( 부모클래스에 해당 ) package chap_07.camera; public class Camera { // 부모 클래스 public String name; public Camera() { // 생성자 this.name = "카메라"; } public void takePicture(){ // 사진 촬영 System.out.println(this.name + " : 사진을 촬영합니다."); } public void recordVideo(){ // 동영상 녹화 System.out.println(this.name + " : 동영상을 녹화합니다."); } } 2. FactoryCam.class (자식 클래스) package chap_07.camera; public class Fa..

패키지

_11_Package package chap_07; import java.util.Random; public class _11_Package { public static void main(String[] args) { // 패키지 // 자바 클래스들을 비슷한 것들끼리 정리하는 폴더 구조. // 랜덤 클래스 사용해보자. Random random=new Random(); System.out.println("랜덤 정수 : "+random.nextInt()); // int의 범위 내에서 정수형 값 반환 System.out.println("랜덤 정수 (범위) : "+random.nextInt(10)); // 0이상 10 미만의 정수형 System.out.println("랜덤 실수 : "+random.nextDou..

생성자

_08_Constructor ( 생성자 ) 1. 기본 생성자 호출 package chap_07; public class _08_Constructor { public static void main(String[] args) { // 생성자 : 객체가 만들어질 때 자동으로 호출되는 메소드 BlackBox b1=new BlackBox(); } } package chap_07; public class BlackBox { String modelName; // 모델명 String resolution; // 해상도 int price; // 가격 String color; // 색상 static boolean canAutoReport=false; // 자동 신고 기능 BlackBox(){ System.out.printl..

this

_07_this package chap_07; public class _07_This { public static void main(String[] args) { BlackBox b1=new BlackBox(); // 기존의 "까망이"에서 "까망이(최신형)"으로 모델명 업데이트 b1.modelName="까망이"; b1.appendModelName("(최신형)"); } } void appendModelName(String modelName) { this.modelName += modelName; } // 클래스가 가진 인스턴스 변수인 modelName임을 명시하고 싶으면 // this.modelName 이라고 쓴다. // 우측은 파라미터로 전달받은 modelName이다. // 인스턴스 변수와 전달받은 파라..

메소드 오버로딩 / 클래스 메소드

_05_MethodOverloading ( 메소드 오버로딩 ) package chap_07; 1. public class BlackBox 클래스에 아래와 같은 함수 정의. 2. 같은 함수 이름, 비슷한 동작의 코드를 별도로 작성할 때의 불편함 인식 이와 같은 코드를 위의 void record(boolean showTime, boolean showSpeed, int min) { ... } 와 별도로 정의하면 전달값이나 셋팅값, 함수 내용이 달라질 경우 일일이 찾아서 수정해야 하는 불편함이 발생한다. 함수 이름이 같다 => 비슷한 동작이 정의됨을 유추 가능 비슷한 동작을 서로 다른 코드로 별도로 작성하면 불편 같은 동작 두 번 정의 않고 새롭게 메소드 호출하면서 기본적으로 정의된 값을 던져주면 아무 값을 모..

클래스

_01_Class package chap_07; public class _01_Class { public static void main(String[] args) { // 객체 지향 프로그래밍 // 객체들끼리 서로 어우러진 형태로 프로그램 구성 // 유지보수 용이 // 높은 재사용성 // 차량용 블랙박스 // 모델명, 해상도, 가격, 색상 // 우리가 만든 첫 번째 제품 String modelName="까망이"; String resolution="FHD"; int price=200000; String color="블랙"; // 새로운 제품을 개발(두 번째 제품) String modelName2="하양이"; String resolution2="UHD"; int price2=300000; String col..