관리 메뉴

거니의 velog

230720 자바 강의 본문

대덕인재개발원/대덕인재개발원_Java

230720 자바 강의

Unlimited00 2023. 7. 20. 20:26

접근지정자 제한자 반환타입 메서드명([매개변수 list]) {

                  메서드 본체

}

 

[제한자]

(1) abstract : 몸통이 없는 메소드. { } 가 없는 미완성 메소드. 이를 포함하는 클래스도 추상 클래스가 되어야 한다. 아직 완성된 객체가 아니라 인스턴스화가 불가능하다.

(2) static : main(), Math.random(), System.out.println() 등의 메서드는 과거 시점에서 로딩될 때 만들어짐. 객체 생성되기 전부터 호출할 수 있어야 하기 때문이다.

- static 이 붙은 메서드는 클래스명.메소드명(); 으로 불러야 한다.

클래스 객체가 생성이 되지 않아도 얼마든지 접근 가능. 이를 이용한 것이 싱글톤 패턴.

(3) final : 재정의 금지. @Override 금지.

 

return

(1) 제어의 반납 : void에서도 사용 가능. 그냥 return;으로만 끝남.

(2) 값의 반납

 

매개변수 전달 방법 : Call by value.

메소드로 전달된 매개변수 값 10, 20은 레지스터 메모리 영역에 저장되고,

메소드(int x, int y)는 그 값을 모른 상태로 copy만 한다.

그래서 메소드 안에 매개변수 명이 바뀌어도 전달되는 값 자체는 변하지 않는다.






[Goods.java]

package ddit.chap06.sec05;

public class Goods {

	private String itemName;
	private int price;
	private int bonusPoint;
	
	public Goods() {}
	
	public Goods(String itemName, int price) {
		this(itemName, price, (int)(price*0.001));
	}
	
	public Goods(String itemName, int price, int bonusPoint) {
		this.itemName = itemName;
		this.price = price;
		this.bonusPoint = bonusPoint;
	}

	public String getItemName() {
		return itemName;
	}

	public void setItemName(String itemName) {
		this.itemName = itemName;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}

	public int getBonusPoint() {
		return bonusPoint;
	}

	public void setBonusPoint(int bonusPoint) {
		this.bonusPoint = bonusPoint;
	}

	// ctrl+t : 객체 가계도 보기
	
	// TV, Computer, Audio 따로 클래스 만들어 자식 관계 형성
	// toString(); 자식 클래스에 자동으로 상속해 줌.
	@Override
	public String toString() {
		return itemName;
	}
	
}

[Customer.java]

package ddit.chap06.sec05;

public class Customer {

	private int money;
	private int bonusPoint;
	private String cart = "";
	
	public Customer() {}
	
	public Customer(int money, int bonusPoint, String cart) {
		this.money = money;
		this.bonusPoint = bonusPoint;
		this.cart = cart;
	}

	public int getMoney() {
		return money;
	}

	public void setMoney(int money) {
		this.money = money;
	}

	public int getBonusPoint() {
		return bonusPoint;
	}

	public void setBonusPoint(int bonusPoint) {
		this.bonusPoint = bonusPoint;
	}

	public String getCart() {
		return cart;
	}

	public void setCart(String cart) {
		this.cart = cart;
	}
	
	// 메서드 오버로딩으로 인해 buy() 메서드를 중복해서 정의 가능. 매개변수 타입으로 구분하기 때문.
	public void buy(TV t) {
		money += t.getPrice();
		bonusPoint += t.getBonusPoint();
		cart += ", "+t; // t.toString() 메서드 자동 실행
	}
	
	public void buy(Computer c) {
		money += c.getPrice();
		bonusPoint += c.getBonusPoint();
		cart += ", "+c; // c.toString() 메서드 자동 실행
	}
	
	public void buy(Audio a) {
		money += a.getPrice();
		bonusPoint += a.getBonusPoint();
		cart += ", "+a; // a.toString() 메서드 자동 실행
	}
	
	public void summary() {
		System.out.println("구입품목 : " + cart.substring(2));
		System.out.println("구입금액 합계 : " + money);
		System.out.println("적립 포인트 : " + bonusPoint);
	}
	
}

[TV.java]

package ddit.chap06.sec05;

public class TV extends Goods {

	TV() {
		super("Television", 50000);
	}
	
//	@Override
//	public String toString() {
//		return "Television";
//	}
	
}

[Computer.java]

package ddit.chap06.sec05;

public class Computer extends Goods {

	Computer() {
		super("Computer", 100000);
	}
	
//	@Override
//	public String toString() {
//		return "Computer";
//	}
	
}

[Audio.java]

package ddit.chap06.sec05;

public class Audio extends Goods {
	
	Audio() {
		super("Audio", 15000);
	}
	
//	@Override
//	public String toString() {
//		return "Audio";
//	}

}

[HimartExample.java]

package ddit.chap06.sec05;

public class HimartExample {

	public static void main(String[] args) {
		
		Customer c1 = new Customer();
		
		c1.buy(new Audio());
		c1.buy(new Computer());
		c1.buy(new TV());
		
		c1.summary();
		
	}

}

콘솔 결과

 

'대덕인재개발원 > 대덕인재개발원_Java' 카테고리의 다른 글

230724 자바 강의  (0) 2023.07.24
230721 자바 강의  (0) 2023.07.21
230719 자바 강의  (0) 2023.07.19
230718 자바 강의  (0) 2023.07.18
230717 자바 강의  (0) 2023.07.17