1. JAVA/3). 자바_개념

자바_개념_Day_25

구이제이 2024. 2. 2. 17:34

복습

 

필드 - private

외부에서 가져다가 사용x

 

getter,setter - private

외부에서 가져다가 사용x

 

생성자 - private

외부에서 생성못하게

 

계산 - private

외부에서 노출안시키는것



1.

day24 완성 : package exam1_02_tea;



public class Customer {

//총2개로 분할해서 하는것이 좋다. (지금은 보여주기로, 하나로한다.)

// 아이디 관련 클래스1개

// 고객아이디

// 고객명

// 등급

 

//계산 관련하는 클래스1개

// 보너스 포인트

// 결제 금액

// 적립금

// 할인율

 

 

 

//#1. 필드

private String id; //고객아이디

private String name; //고객명

private Grade grade; //등급

 

 

int point; //보너스 포인트

int paymentAmount; //결제 금액

double ratio; //적립금에 대한 비율

double discountRate; //할인율

 

 

//#2. 생성자

public Customer(String id, String name, Grade grade, double ratio, double discountRate) {

super();

this.id = id;

this.name = name;

this.grade = grade;

this.ratio = ratio;

this.discountRate = discountRate;

}

 

 

//#3. 포인트 계산 메소드

private void calcPoint(int price) {

point +=(int)(price*ratio); //강제 형변환해서 소숫점이하 버리기

System.out.println(name + "님의 현재 포인트 누적액은 " + point + "입니다.");

}

 

 

 

 

//#4. 결제 금액 계산 메소드

private void calcPrice(int price) {



ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

public class Vip extends Customer {

 

/* 1)

//10% 할인, 포인트추가를 0.5%를 주기

final double RATTIO = 0.1;

final double DISCOUNT = 0.05;

 

 

//생성자에 넣고싶다면, 메모리에 이미 올라와 있어야한다.

// final double RATTIO = 0.1; 이것은 메모리에 아직 안올라와있다.

// final double DISCOUNT = 0.05; 이것은 메모리에 아직 안올라와있다.

//  올려주지 못한다.

public Vip(String cid, String name, String grade) {

 

super(cid, name, grade, RATTIO, DISCOUNT);

 

}

 

*/

//2) 생성자안에, 고정된 final값을 넣는 올바른 방법 static을 선언한다.

//생성자 부모생성자안에 올려야 하기떄문에, static을 붙여준다.

//밑에서 쓸때는static 안써도 된다.

final static double RATTIO = 0.005; //상수

final static double DISCOUNT_RATE = 0.1;

final int a = 10;

//숫자를 입력하는 곳에는 항상 변수를 선언해서 사용하라

 

//final double test = 5.5;

public Vip(String cid, String name, Grade grade) {

super(cid, name, grade, RATTIO, DISCOUNT_RATE);

}

 

int test = 10 * a; //객체가 만들어진다음에 처리된다.

//우선순위가 부모생성자, 개인생성자이다.

 

//Enum사용법

//1. Grade Enum을만든다.

//2. 생성자로 받고 싶다면. 넘겨받는 타입을 enum타입으로 한다.

// public Vip(String cid, String name, Grade grade) {

// super(cid, name, grade, RATTIO, DISCOUNT_RATE);

// }

// 3. main에다가 선언한다.

 

}

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

public class Gold extends Customer {

 

final static double RATTIO = 0.003; //상수

final static double DISCOUNT_RATE = 0.05;

//static은 각각 클래스가 관리하는 영역에 들어가 있다.

//ex) 이름 같아도, 된다.

 

//반면에

//customer안에도 상수가 있고,

//자식인 gold안에도 같은 상수가 있는것은 문제가 된다.(상속받기때문에)

 

 

public Gold (String cid, String name, Grade grade) {

super(cid, name, grade, RATTIO, DISCOUNT_RATE);

}

 

}

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

public enum Grade {

VIP,

GOLD,

SILVER,

GENERAL

}



ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

public class CustomerMain {

public static void main(String[] args) {

Vip vip = new Vip("123","홍길동", Grade.VIP);

Gold gold = new Gold("456","김자바", Grade.GOLD);

 

 

vip.showInfo(580_000);

System.out.println("---------------------");

gold.showInfo(450_0000);

 

 

 

 

//자식들을 부모 타입으로 묶는다.

Customer[] cus = {

new Vip("123","홍길동",Grade.VIP),

new Gold("456","김자바",Grade.GOLD)

};

 

for(int i = 0 ; i < cus.length; i++) {

 

 

 

//부모타입으로 묶인 자식들을 다시 개인타입으로 변환

if(cus[0] instanceof Vip vip1) {

vip1.showInfo(580_000);

}

if(cus[1] instanceof Gold gold1) {

gold1.showInfo(450_0000);

}

 

}// end of for

}

}



ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ





Eunm 사용법

2.

day25/package enumexam;/WekkMain

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

public enum Week { // Week 타입으로 선언하고 호출한다.

 

//안의 내용이 상수개념이다.

//이넘사용범 2가지

 

MONDAY//열거상수 // 따지자면 "MONDAY" == MONDAY 처럼보면 된다.

TUESDAY,

WEDNESWDAY,

THURSDAY,

FRIDAY,

SATURDAY,

SUNDAY

 

}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

public enum Week2 { // Week 타입으로 선언하고 호출한다.

 

//안의 내용이 상수개념이다.

//이넘사용범 2가지

 

MONDAY//열거상수 // 따지자면 "MONDAY" == MONDAY 처럼보면 된다.

TUESDAY,

WEDNESWDAY,

THURSDAY,

FRIDAY,

SATURDAY,

SUNDAY

 

}




ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

public class WekkMain {

public static void main(String[] args) {

Week w = Week.MONDAY; //상수 담았다.

Week w1 = Week.MONDAY; //상수 담았다.

 

System.out.println(w);

System.out.println(Week.MONDAY);

 

System.out.println(Week.MONDAY.equals("MONDAY")); //false : 타입이 다르기떄문에

System.out.println(w == Week.MONDAY); //true : 상수값 같다.

System.out.println(w == w1); //true : 상수값 같다.

//ex)홍길동 홍길동 스트링

 

System.out.println("good");

// System.out.println(Week.MONDAY == Week2.MONDAY); // 비교가 안된다.

System.out.println(Week.MONDAY.equals(Week2.MONDAY)); //다르다 : 상수가 다른곳을 보기떄문에

//System.out.println(w == Week2.MONDAY); //비교가 안된다.

// System.out.println(Week.MONDAY.equals(w); //비교가 안된다.

 

 

//equals는 타입까지 체크해준다.

//이넘은 ""문자열(String)이 아니다, 타입이고, 안의 내용은 이넘은 '상수'이다.

//상수 : 자기가 정해진 영역 1개만 쓴다

 

// == 는 주소를 비교

// equls는 타입/값/

 

 

 

 

 

}

}

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ





ㅡㅡㅡ

문제풀기 (3가지방법)

1.일반 - extends

2.추상 - implement

3.인터페이스

 

'1. JAVA > 3). 자바_개념' 카테고리의 다른 글

자바_개념_Day_27  (1) 2024.02.06
자바_개념_Day_26  (1) 2024.02.05
자바_개념_Day_24  (0) 2024.02.01
자바_개념_Day_23  (0) 2024.01.31
자바_개념_Day_22  (1) 2024.01.30