자바-12일차(2) 이클립스

최성현·2023년 6월 30일
0

Java

목록 보기
33/46

interface 다중구현

하위클래스에 interface 2개 상속받아서 다중구현

interface1

interface InterA{
	
	public void draw();
	public void write();
}

interface2

interface InterB{
	
	public void play();
}

하위클래스
implements interface명1,interface명2

class Impl implements InterA,InterB{

	@Override
	public void play() {
		System.out.println("축구를 합니다");
	}

	@Override
	public void draw() {
		System.out.println("그림을 그립니다");
	}

	@Override
	public void write() {
		System.out.println("일기를 씁니다");
	}

}

메인클래스

public class InterImpl_02 {

	public static void main(String[] args) {
		
		//생성1
		Impl a=new Impl();
		a.play();
		a.draw();
		a.write();
		
		
		//다형성
		InterA inA=new Impl();
		inA.draw();
		inA.write();
		
		InterB inB=new Impl();
		inB.play();
	}
}

interface 다중구현2

interface1을 interface2에 상속시키고 하위클래스에 interface2를 상속시킨 방법

interface1

interface InterAA{
	
	public void eat();
	public void go();
	
}

interface2

interface InterBB extends InterAA{
	
	public void ride();
}

하위클래스

class InterImpl2 implements InterBB{

	@Override
	public void eat() {
		System.out.println("저녁을 먹어요");
	}

	@Override
	public void go() {
		System.out.println("롯데월드 가요");
	}

	@Override
	public void ride() {
		System.out.println("자전거 타고 놀아요");
	}	
}

메인클래스

public class InterExtends_03 {

	public static void main(String[] args) {
		
		InterImpl2 a=new InterImpl2();
		a.eat();
		a.go();
		a.ride();
		
		
		InterBB c=new InterImpl2();
		c.eat();
		c.go();
		c.ride();
	}
}

상속 문제

상위클래스(추상클래스)

abstract class Game{
	
	abstract void play();
	abstract void stop();
}

하위클래스(상위클래스 1개를 하위클래스 3개 상속)

class SungHyeon extends	Game{

	@Override
	void play() {
		System.out.println("성현이가 게임을 합니다");
	}

	@Override
	void stop() {
		System.out.println("성현이가 게임을 종료합니다");
	}
}
class SoonYeong extends Game{

	@Override
	void play() {
		System.out.println("순영이가 게임을 합니다");
	}

	@Override
	void stop() {
		System.out.println("순영이가 게임을 종료합니다");
	}
}
class SunBum extends Game{

	@Override
	void play() {
		System.out.println("선범이가 게임을 합니다");
	}

	@Override
	void stop() {
		System.out.println("선범이가 게임을 종료합니다");
	}
}

메인클래스 for문 배열 이용

public class ArrConst_04 {

	public static void main(String[] args) {

		Game arr[]= {new SungHyeon(),new SoonYeong(),new SunBum()};
		
		for(int i=0;i<arr.length;i++)
			arr[i].play();
		System.out.println("-----------------------");
		for(int i=arr.length-1;i>=0;i--)
			arr[i].stop();
	}
}

BoardCRUD

CRUD-게시물 추가, 조회, 수정, 삭제

interface

interface Board{
	public void process();
}

하위클래스(상위클래스 상속)

class Insert implements Board{

	@Override
	public void process() {
		System.out.println("게시판에 게시물을 추가합니다");
	}
}
class Select implements Board{

	@Override
	public void process() {
		System.out.println("게시판에 게시물을 조회합니다");
	}
}
class Update implements Board{

	@Override
	public void process() {
		System.out.println("게시판에 게시물을 수정합니다");
	}
}
class Delete implements Board{

	@Override
	public void process() {
		System.out.println("게시판에 게시물을 삭제합니다");
	}
}

메인클래스

public class BordCRUD_0 {

	public static void main(String[] args) {
		
		Scanner sc= new Scanner(System.in);
		
		Board board=null;
		int n; //입력할 숫자
		
		while(true)
		{
			System.out.println("1.추가  2.조회  3.수정 4.삭제");
			System.out.println("=================================");
			n=Integer.parseInt(sc.nextLine());
			
			switch(n)
			{
			case 1:
				board=new Insert();
				break;
			case 2:
				board=new Select();
				break;
			case 3:
				board=new Update();
				break;
			case 4:
				board=new Delete();
				break;
			case 9:
				System.out.println("종료합니다");
				System.exit(0); //강제종료
			default:
				System.out.println("**잘못입력했어요**");
				break;
			}
			if(n<=4)
				board.process();
		}
	}
}

CRUD 문제

상위클래스(추상클래스)

abstract class Command{
	
	public abstract void write(); // ==abstract public void write();
	
}

하위클래스

class Insert1 extends Command{

	@Override
	public void write() {
		System.out.println("추가합니다");
	}
}
class List extends Command{

	@Override
	public void write() {
		System.out.println("조회합니다");
	}
	
}
class Modify extends Command{

	@Override
	public void write() {
		System.out.println("수정합니다");
		
	}
	
}
class Delete1 extends Command{

	@Override
	public void write() {
		System.out.println("삭제합니다");
		
	}
	
}

메인 클래스

public class OracleCRUD_06 {

	public static void main(String[] args) {

		Scanner sc=new Scanner(System.in);
		Command c=null;
		int n;
		
		while(true)
		{
			System.out.println("1.추가  2.조회  3.수정  4.삭제");
			System.out.println("================================");
			n=Integer.parseInt(sc.nextLine());
			
			/*
				if(n==1)
					c=new Insert1();
				else if(n==2)
					c=new List();
				else if(n==3)
					c=new Modify();
				else if(n==4)
					c=new Delete1();
				else
					break;	
					*/
			switch(n)
			{
			case 1:
				c=new Insert1();
				break;
			case 2:
				c=new List();
				break;
			case 3:
				c=new Modify();
				break;
			case 4:
				c=new Delete1();
				break;
			case 9:
				System.out.println("종료합니다");
				System.exit(0);
			default:
				System.out.println("잘 못 입력했어요");	
				break;
			}
			if(n<=4)
				c.write();
		}
	}

}
profile
백엔드 개발자로서 성장해 나가는 성현이의 블로그~

0개의 댓글