주요내용 : 상속
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);
}
}