728x90
패키지
package chap_07;
import java.util.Random;
public class _11_Package {
public static void main(String[] args) {
// 패키지 : 연관된 클래스들 묶어놓는 것
// import : 다른 패키지에 있는 걸 사용하겠다는 걸 알림
// Random 클래스 : 어떤 값을 랜덤으로 뽑을 수 있는 것
// Random 객체 // 객체이름 : random
Random random = new Random();
// int 의 범위 내에서 정수형 값 반환
System.out.println("랜덤 정수: " + random.nextInt());
// 0 ~ 10 미만의 정수형 값 반환
System.out.println("랜덤 정수 (범위) : " + random.nextInt(10));
// 0.0 ~ 1.0 미만의 실수형 값 반환
System.out.println("랜덤 정수 : " + random.nextDouble());
// 만약 5.0 이상 10.0 미만의 실수를 뽑으려면??
double min = 5.0;
double max = 10.0;
System.out.println("랜덤 실수 : " + (min + (max - min) * random.nextDouble()));
System.out.println("랜덤 boolean : " + random.nextBoolean());
// 로또 번호를 랜덤으로 뽑으려면? (1 ~ 45)
System.out.println("로또 번호 : " + (random.nextInt(45)+1));
// nextInt(45) : 0 이상 45 미만의 수
// nextInt(45) + 1 : 1 이상 46 미만의 수 = 1 이상 45 이하의 수
}
}
1. 왜 객체부터 생성을 하는지 ( 왜 객체생성이 필수인지)
Random random = new Random();
상속 (전반전)
package chap_07.camera;
public class Camera {
public String name;
public Camera() {
this.name = "카메라";
}
public void takePicture() {
// 사진촬영
System.out.println("사진을 촬영합니다");
}
public void recordVideo() {
// 동영상 녹화
System.out.println("동영상을 녹화합니다");
}
}
1. this를 사용한 이유
package chap_07.camera;
public class FactoryCam {
public String name;
public FactoryCam() {
this.name = "공장 카메라";
}
public void takePicture() {
// 사진 촬영
System.out.println("사진을 촬영합니다");
}
public void recordVideo() {
// 동영상 녹화
System.out.println("동영상을 녹화합니다");
}
public void detectFire() {
// 화재감지
System.out.println("화재를 감지합니다");
}
}
package chap_07.camera;
public class SpeedCam {
public String name;
public SpeedCam() {
this.name = "과속단속 카메라";
}
public void takePicture() {
// 사진촬영
System.out.println("사진을 촬영합니다");
}
public void recordVideo() {
// 동영상 녹화
System.out.println("동영상을 녹화합니다");
}
public void checkSpeed() {
// 속도 체크
System.out.println("속도를 측정합니다");
}
public void recognizeLicensePlate() {
// 번호 인식
System.out.println("차량 번호를 인식합니다.");
}
}
package chap_07;
import chap_07.camera.Camera;
import chap_07.camera.FactoryCam;
import chap_07.camera.SpeedCam;
public class _12_inheritance {
public static void main(String[] args) {
// 상속
// 객체 생성
Camera camera = new Camera();
FactoryCam factoryCam = new FactoryCam();
SpeedCam speedCam = new SpeedCam();
System.out.println(camera.name);
System.out.println(factoryCam.name);
System.out.println(speedCam.name);
camera.takePicture();
factoryCam.recordVideo();
speedCam.takePicture();
}
}
상속 (후반전)
package chap_07.camera;
public class Camera { // 부모 클래스 : 기능을 물러주는 클래스 = Camera class
// 부모 클래스는 하나만 상속 가능
// FactoryCam 하고 SpeedCam은 Camera의 기능을 이어받아 쓰게되는 "자식 클래스"
public String name;
public Camera() {
this.name = "카메라";
}
public void takePicture() {
// 사진촬영
System.out.println(this.name + " : 사진을 촬영합니다");
}
public void recordVideo() {
// 동영상 녹화
System.out.println(this.name +" : 동영상을 녹화합니다");
}
}
package chap_07.camera;
public class FactoryCam extends Camera { // 자식 클래스
// extends 적어서 Camera 로부터 상속을 하게됨
public FactoryCam() {
this.name = "공장 카메라";
}
// Camera 상속하니까 Camera에 있는 부분 지워준다.
public void detectFire() {
// 화재감지
System.out.println("화재를 감지합니다");
}
}
package chap_07.camera;
public class SpeedCam extends Camera { // 자식 클래스
// Camera 상속하니까 Camera에 있는 부분 지워준다.
public SpeedCam() {
this.name = "과속단속 카메라";
}
public void checkSpeed() {
// 속도 체크
System.out.println("속도를 측정합니다");
}
public void recognizeLicensePlate() {
// 번호 인식
System.out.println("차량 번호를 인식합니다.");
}
}
package chap_07;
import chap_07.camera.Camera;
import chap_07.camera.FactoryCam;
import chap_07.camera.SpeedCam;
public class _12_inheritance {
public static void main(String[] args) {
// 상속
// 객체 생성
Camera camera = new Camera();
FactoryCam factoryCam = new FactoryCam();
SpeedCam speedCam = new SpeedCam();
System.out.println(camera.name);
System.out.println(factoryCam.name);
System.out.println(speedCam.name);
camera.takePicture();
factoryCam.recordVideo();
speedCam.takePicture();
factoryCam.detectFire();
speedCam.checkSpeed();
speedCam.recognizeLicensePlate();
}
}
오버라이딩
package chap_07;
import chap_07.camera.Camera;
import chap_07.camera.FactoryCam;
import chap_07.camera.SpeedCam;
public class _13_MethodOverriding {
public static void main(String[] args) {
// 메소드 오버라이딩 : 자식클래스에서 부모클래스의 메소드를 덮어 쓰는 것
// 부모클래스에 써있는 메소드를 자식클래스에서 재정의
Camera camera = new Camera();
FactoryCam factoryCam = new FactoryCam();
SpeedCam speedCam = new SpeedCam();
camera.showMainFeature();
factoryCam.showMainFeature();
speedCam.showMainFeature();
}
}
package chap_07.camera;
public class Camera { // 부모 클래스 : 기능을 물러주는 클래스 = Camera class
// 부모 클래스는 하나만 상속 가능
// FactoryCam 하고 SpeedCam은 Camera의 기능을 이어받아 쓰게되는 "자식 클래스"
public String name;
public Camera() {
this.name = "카메라";
}
public void takePicture() {
// 사진촬영
System.out.println(this.name + " : 사진을 촬영합니다");
}
public void recordVideo() {
// 동영상 녹화
System.out.println(this.name + " : 동영상을 녹화합니다");
}
public void showMainFeature() {
System.out.println(this.name + "의 주요기능 : 사진촬영,동영상 녹화"); // FactoryCam이나 SpeedCam에도 똑같이 사용 가능
}
}
package chap_07.camera;
public class FactoryCam extends Camera { // 자식 클래스
// extends 적어서 Camera 로부터 상속을 하게됨
public FactoryCam() {
this.name = "공장 카메라";
}
// Camera 상속하니까 Camera에 있는 부분 지워준다.
public void detectFire() {
// 화재감지
System.out.println("화재를 감지합니다");
}
public void showMainFeature() {
System.out.println(this.name + "의 주요기능 : 화재감지");
// FactoryCamd의 객체를 통해갖고
// showMainFeature을 호출하게 되면, showMainFeature메소드가 Camera에 있는 showMainFeature를 덮어써서
// FactoryCam에 있는 showMainFeature에 있는 메소드가 호풀되는것
}
}
package chap_07.camera;
public class SpeedCam extends Camera { // 자식 클래스
// Camera 상속하니까 Camera에 있는 부분 지워준다.
public SpeedCam() {
this.name = "과속단속 카메라";
}
public void checkSpeed() {
// 속도 체크
System.out.println("속도를 측정합니다");
}
public void recognizeLicensePlate() {
// 번호 인식
System.out.println("차량 번호를 인식합니다.");
}
@Override // 주석. annotation. 부모클래스의 메소드를 오버라이딩 하고 있는 것
public void showMainFeature() {
System.out.println(this.name + "의 주요기능 : 속도 측정, 번호 인식");
}
}
728x90
'> 프로그래밍 언어 > JAVA' 카테고리의 다른 글
[나도코딩] 자바기본편 - 섹션 8 (2) (0) | 2023.04.15 |
---|---|
[나도코딩] 자바기본편 - 섹션 8 (1) (4) | 2023.04.12 |
[나도코딩] 자바기본편 - 섹션 7 (0) | 2023.04.12 |
[나도코딩] 자바기본편 - 섹션 1, 2 (0) | 2023.04.06 |
[그림으로 배우는 자바, part2]: 03 레퍼런스와 스태틱 (0) | 2023.02.27 |