괴발개발

추상화, 인터페이스, 다형성 안에 매개변수 있는 거 정리 본문

BACK END/JAVA

추상화, 인터페이스, 다형성 안에 매개변수 있는 거 정리

dinoelll 2023. 3. 2. 18:53

<추상화 - abs 클래스 - 게임컨트롤>

	public String jump(String job) {
		return job+" 가 점프 한다.";
	ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
    String job = req.getParameter("class");
    switch (job) {
		case "탱커"
			
			Tanker tanker = new Tanker();
			
			if (addr.equals("/skill")) {
				result = tanker.skill(job);
                
 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 다형성으로 퉁치기
 		StandardMoel model = null;
		String result = "";

		switch (job) {
		case "탱커" :
			
			model = new Tanker();
			
			if(attr .equals("/skill")) {
				result = model.skill(job);

 

<인터페이스 - 빙수메이커>

 

public interface Vingsu { //** 인터페이스
	
	public default void  iceFlake(){
		System.out.println("갈아둔 얼음을 넣는다.");
        
        [+똑같이 syso로 우유를 넣 는다, 팥을 넣는다, 젤리를 넣는다, etc 임] 
		
 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ인터페이스를 불러옴
 public class VingsuMachine {

	String name = "";

	public VingsuMachine(String name) {
		this.name = name;
		
	}
	//인터페이스를 구현받은 클래스는 인터페이스 데이터타입의 변수에 들어갈 수 있다.(다형성)
    
    //레드빈 빙수와 초코 빙수는 vingsu를 구현받고 있으니까 vs라는 (인터)데이터 변수에 들어갈 수 있다
	
	
	public String makeVingsu(Vingsu vingsu) {
		
		vingsu.iceFlake();
		vingsu.mik();
		vingsu.redBean();
		vingsu.jelly();
		vingsu.etc();
		return name+ "가 완료 되었습니다."; -> 생성자에 name 한 이유
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
String vingsu = req.getParameter("vingsu");
VingsuMachine vm = new VingsuMachine(vingsu); -> 이름 넣으라 했으니까 이름 넣은것name
String result = "";//4) 위에 name이 반환하는 값이 있으니까 result에 담아주려 일단 선언		
        
		Vingsu vs = null;//2)다 넣을 수 있다고 하니까 인터페이스 Vingsu를 (객체화x)구현 한거임
		
		switch (vingsu) {
[방법1]		case "팥빙수":
			vs = new RedBeanVingsu();//3)
			result = vm.makeVingsu(vs);//1)원래는 vm.makeVingsu(vingsu)vingsu 데이터 타입에 뭘 넣어라
			                             + 그 vingsu는 구현한거 다 넣을 수 있음
			break;
[방법2]		case "초코빙수":
			result = vm.makeVingsu(new ChocoVingsu());

<(추상화 인터페이스 전부 없음) - 다형성 - Racer2> 

public class Audi extends Car {

	@Override
	public String run() {
		
		return this.getClass().getSimpleName() +super.run();// = "Audi" + super.run();
	}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡBMW,Benz,audi를 상속해주는 부모
public class Car {
		public String run() {
			return "차량이 움직인다.";
		}

}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡCar를 객체화 해주고 있다
public class Racer {

    public String drive(Car car) {//(** Car car = new Car()랑 같다.)
			return car.run();
		}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ카 컨트롤러
public class CarController extends HttpServlet {
	String car = req.getParameter("car");
	String result = "";
	Racer racer = new Racer();

		if(car.equals("audi")) {
			result = racer.drive(new Audi());
					
			
		}
		if(car.equals("benz")) {
			result = racer.drive(new Benz());

'BACK END > JAVA' 카테고리의 다른 글

JSTL의 정리  (0) 2023.03.05
vingsumaker 추가  (0) 2023.03.02
[퀴즈 정리]D30 JAVA - 추상화 ,다형성  (0) 2023.03.02
[정리]추상화, 인터페이스  (0) 2023.03.02
[Dispatcher]정리  (0) 2023.03.01
Comments