10일차 - 상속

|

주요내용 : 상속

package OOP;

//번호, 이름, 주민번호로 입력하여 출력. 상속 이용.

class People{
	
	String name;
	String ssn;
	int no;
	
	public People(String name, String ssn, int no){
		this.name = name;
		this.ssn = ssn;
		this.no = no;
	}
		
	
}


class Student extends People{
	int sum=0;
	
	public Student(String name, String ssn, int no) {
		super(name, ssn, no);
	}
	
	public int bak() {
	for(int i=1; i<=100; i++) {
		sum+=i;
	}
		return sum;
	}
	
}

public class InherSample4 { //public 클래스는 유일하게 1개여야함.

	public static void main(String[] args) {
		
		Student std = new Student("홍길동", "123456-1234567", 1);
		System.out.println("Name = " + std.name);
		System.out.println("Ssn = " + std.ssn);
		System.out.println("No = " + std.no);
		
		System.out.println("1~100 합은 = " + std.bak());

	}

}

-------------------------------------------------------------

package OOP;

import java.util.Scanner;

class A {
	
	public void call() {
	int size, number = 0;

	Scanner sc = new Scanner(System.in);
	System.out.println("배열의 크기를 입력해 주세요.");
	size = sc.nextInt();

	int array[] = new int[size];

	//데이터 입력
	for(int i=0; i < array.length; i++) {
		array[i] = sc.nextInt();
	}System.out.println();

	//데이터 출력
	for(int i=0; i < array.length; i++) {
		System.out.print(array[i] + " ");
	}System.out.println();
	}
}

class B extends A {

	public void call(int m) {
		int number=0;

		int array[] = {12, 24, 13, 140, 550};
					
		for(int i=0; i<array.length; i++) {
			if(array[i]%2==0) {
				number++;
				System.out.println("번호" + number + ", 짝수는 = " + array[i]);
			}else {
				System.out.println("짝수 X");
			}
		}System.out.println();
	}
}

class C extends B {
	public void call(String name, int y) {
		
		int array[] = {12, 24, 13, 140, 550, 321, 34};
		
		int baesu=0;
		for(int i=0; i<array.length; i++) {
			if(array[i]%5==0) {
				baesu++;
				System.out.println("번호" + baesu + ", 5의 배수는 = " + array[i]);
			}else {
				System.out.println("배수 X.");
			}
		}
		}
	}

public class InherSample13 {	

	public static void main(String[] args) {
		int m=5;

		C d = new C();
		d.call();//
		d.call(5);
		d.call("홍길동", 7);
		
	}

}
----------------------------------------------------------

package OOP;

import java.util.Scanner;

/* Car 클래스가 있는데, 이름과, 속도가 정의되어 있습니다.
 * 여기에, InherSample6 클래스를 사용하여 이름과 속도를 입력하여 사용해 보세요.
 * Car : 버스
 */

class Car{
	
	public void name(String n){
		System.out.println(n + "자동차");
	}
	
	public void velocity(int v){
		v+=100;
		System.out.println(v + "km");
	}
	
	public void color(String c){
		System.out.println(c + "색");
	}
	
}

class Truck extends Car{
	
}


public class InherSample6 {

	public static void main(String[] args) {
		
		Truck tcr = new Truck();
		tcr.name("말리부");
		tcr.velocity(100);
		tcr.color("RED");
		

	}

}
----------------------------------------------------------

package OOP;

/*문제] 
 * 저축은행이 있습니다. 이 은행에 계좌 개설하고, 저금을 합니다.
 *1.계좌생성
 *2.저축: 1000 + 2000 + 3000
 *3.출금: 500
 *4.잔액: 5500
 *5.임금액에 대한 체크, 출금액도 체크 합니다.
 * 상속 이용하여 코딩.
 * 
 */

class AccountOutput  {	
	protected static int val;//1000원 저장, 3000, 6000, 5500
	
	AccountOutput(int init){ 
		val = init;//1000
	}
	
	protected void accumulate(int su){ 
		if(su < 0){ 
			return;
		}
		val+=su;	//1000 + 2000 = 3000 + 3000 = 6000		
	}
	
	protected int getAccVal(){
		return val;//5500
	}		
}

class AccountInput extends AccountOutput {
	
	public AccountInput(int initValue)	{ //1000
			super(initValue);  //1000    
	}
	public void deposit(int money) { //입금
		accumulate(money);
	}
	public void withdraw(int money){ 
		if(val < money) //6000 < 500
			return;
		val = val - money;// 6000 - 500 = 5500
	}
	
	public void showSavedMoney()	{
		System.out.print("지금까지의 누적금액: ");
		System.out.println(getAccVal() + "원 입니다.");//5500
	}
}

public class InherSample7 {

	public static void main(String[] args) {
		AccountInput ac = new AccountInput(1000);
		ac.deposit(2000);//입금
		ac.deposit(3000);//		
		ac.withdraw(500);//출금
		ac.showSavedMoney();//잔액
	}
}
------------------------------------------------------------

package OOP;

import java.util.Scanner;

/*한국은행에 계좌를 개설하고 저축을 합니다.
 * 현재 입금된 금액은 0원입니다.
 * 저축을 하면서 상속을 이용하여 누적 금액을 알아보고, 입금 횟수를 카운트하여 출력해 보세요.
 * 단, 키보드로부터 입력을 받습니다.
 */
class SaveMoney {
	static int count=0;
	int money=0;
	static int totalmoney=0;
	 
	
	public void inputSave() {	 
		while(true) {
	 Scanner sc = new Scanner(System.in);
	 System.out.println("입금액을 기재하세요.");
	 money = sc.nextInt();
	 
	 if(money == 0) {
		 break;		 
	 	}
	 	totalmoney +=money;
	 	count++;	 
	 	}
	}

}

class TotalMoney extends SaveMoney {

	public void total() {
		System.out.println("누적 금액은 = " + totalmoney);
		System.out.println("카운트 = " + count);
	}
}

public class InherSample8 {

	public static void main(String[] args) {
		SaveMoney sm = new SaveMoney();
		sm.inputSave();

		TotalMoney tm = new TotalMoney();
		tm.total();
	}
}


---------------------------------------------------------

package OOP;

class Adder{

	public static void Adder() {//4번 메소드 정의부(선언부 포함), 리턴할필요없으므로 void, static(다른클래스에서 이 메소드를 사용할수있다. 참조가능)
		int i, sum1 = 0;
		for(i=0;i<=100;i++) {
			sum1+=i;
		}
		System.out.println("1~100 사이의 합은 " + sum1);
	}
}

class Subtr extends Adder{

	public static void Subtract() {
		int x = 500, y = 300, sum2 = 0;
		sum2 = x - y ;
		System.out.println("1~100 사이의 차는 " + sum2);
		}

}

public class InherSample9 {

	public static void main(String[] args) {
		
		Subtr su = new Subtr();
		su.Subtract();
		su.Adder();

	}

}
-----------------------------------------------------------

package OOP;

//상속과 오버라이딩

//옛날 옛적에 스노우 타이어와 일반 타이어가 살았습니다.
//부모님은 스노우 타이어를 좋아하셨고, 자식은 일반 타이어를 선호 했습니다.
//run()를 이용하여 메소드 오버라이딩 하세요.

//abstract class Parent{ // 추상 클래스
//	//추상메소드와 final 변수
//	final static double pi = 3.14;
//	public void run(){
//		System.out.println("스노우 타이어");
//	}
//	//public abstract는 생략가능
//	public void run2() {
//		// body가 존재하지 않는다.
//	}
//}

class Parent{
	
	public void Hi() {
		System.out.println("방가방가");
	}
	
	public void Hi(String msg) {
		System.out.println(msg);
	}
	
	public void Hi(String name, int kor) {
		System.out.println("당신의 이름은 " +name + "이고, 국어 점수는 = " + kor);
	}
	
}

class Child2 extends Parent{
	
	public void Hi(String msg) {
		System.out.println(msg);
	}
	
	public void run(){ //일반 메소드는 추상클래스안에 쓸수 없다.
		System.out.println("일반 타이어");
	}
	//추상 메소드 오버라이딩
	public void run2() {
		int sum = 100 + 200;
		System.out.println(sum);
	}
}

public class InherSample11 {

	public static void main(String[] args) {
		Parent p = new Parent();
		p.Hi();
		
		Child2 c = new Child2();
		c.run();
		c.Hi("홍길동", 70);

	}

}
-----------------------------------------------------------

package OOP;

import java.util.Scanner;

/*오버라이딩 문제
 * 책방에서 부모님은 3000원을 할인하고,
 * 자식들은 3500원을 할인받습니다.
 * 이를 상속과 오버라이딩을 이용하여 처리하세요. 
 */

class MF{
	
	public void discount(int book){
		int sum = book - 3000;
		System.out.println(sum + " 원입니다.");
	}
	
}

class CD extends MF{
		
	public void discount(int book){
		int sum = book - 3500;
		System.out.println(sum + " 원입니다.");
	}
}

public class InherSample12 {

	public static void main(String[] args) {
		
		while(true) {
			System.out.println("당신의 신분을 입력하시오. 1(부모) 2(자식) 3(종료)");
			Scanner sc = new Scanner(System.in);
			int a = sc.nextInt();
			System.out.println("구입하고자하는 책값을 입력하세요.");
			int b = sc.nextInt();
			switch(a) {
			case 1:
				MF mf = new MF();
				mf.discount(b);
				continue;
			case 2:
				CD cd = new CD();
				cd.discount(b);
				continue;
			case 3:
				System.out.println("책방할인시스템을 종료합니다.");
				System.exit(0);
			}
		}
		
		
		
		
		

	}

}
--------------------------------------------------------------

package OOP;

import java.util.Scanner;

class A {
	
	public void call() {
	int size, number = 0;

	Scanner sc = new Scanner(System.in);
	System.out.println("배열의 크기를 입력해 주세요.");
	size = sc.nextInt();

	int array[] = new int[size];

	//데이터 입력
	for(int i=0; i < array.length; i++) {
		array[i] = sc.nextInt();
	}System.out.println();

	//데이터 출력
	for(int i=0; i < array.length; i++) {
		System.out.print(array[i] + " ");
	}System.out.println();
	}
}

class B extends A {

	public void call(int m) {
		int number=0;

		int array[] = {12, 24, 13, 140, 550};
					
		for(int i=0; i<array.length; i++) {
			if(array[i]%2==0) {
				number++;
				System.out.println("번호" + number + ", 짝수는 = " + array[i]);
			}else {
				System.out.println("짝수 X");
			}
		}System.out.println();
	}
}

class C extends B {
	public void call(String name, int y) {
		
		int array[] = {12, 24, 13, 140, 550, 321, 34};
		
		int baesu=0;
		for(int i=0; i<array.length; i++) {
			if(array[i]%5==0) {
				baesu++;
				System.out.println("번호" + baesu + ", 5의 배수는 = " + array[i]);
			}else {
				System.out.println("배수 X.");
			}
		}
		}
	}

public class InherSample13 {	

	public static void main(String[] args) {
		int m=5;

		C d = new C();
		d.call();//
		d.call(5);
		d.call("홍길동", 7);
		
	}

}

'Bitcamp > BITCAMP - Java' 카테고리의 다른 글

23일차  (0) 2019.07.25
10일차 - 추상  (0) 2019.07.05
9일차 - 과제  (0) 2019.07.05
9일차  (0) 2019.07.04
8일차 - 과제  (0) 2019.07.03
And