JAVA 기초

JAVA 10-1

Vanillwa 2023. 8. 24. 20:20

Inheritance (상속)

기존의 클래스를 재활용하여 새로운 클래스를 작성하는 법 / 상위(부모)클래스, 하위(자식)클래스로 나뉜다.

 

Parent 클래스 (부모)

package ex1_inheritance;

	//상속 : 부모나 조상의 재산의 전부나 일부를 자손이 물려받는 것
	//자바도 부모자식관계 존재하며 재산을 물려받을 수 있도록 되어있다

public class Parent { //부모, 기반, 슈퍼 클래스
	//객체의 재사용성 뿐만 아니라 코드의 간결성도 제공
	
	int money = 200000000;
	String str = "강남";
}

 

Child 클래스 (자식)

package ex1_inheritance;

public class Child extends Parent{
	//자식 클래스는 부모 클래스의 자식임을 명시하는 extends 키워드 사용
	String car = "아반떼";
}

 

Main 클래스

package ex1_inheritance;

public class ExtendsMain {
	public static void main(String[] args) {
		
		Child c1 = new Child();
		System.out.println(c1.car);
		
		//Child 클래스 객체 c1은 Parent 클래스를 상속받았으므로
		//부모로부터 상속받은 money, str등 속성을 사용할 수 있다.
		System.out.println(c1.money);
		System.out.println(c1.str);
		
		//부모 클래스는 자식 클래스의 속성을 사용할 수 없다
		Parent p1 = new Parent();
		//System.out.println(p1.car);
		
		//instanceof 연산자
		//객체명 instanceof 클래스명
		//객체가 해당 클래스의 타입이면 true 아니면 false
		
		if(c1 instanceof Parent) {
			System.out.println("c1은 Parent 타입입니다.");
		}
		if(c1 instanceof Child) {
			System.out.println("c1은 Child 타입입니다.");
		}
		//자바의 상속의 특징
		//한명의 자녀가 두명의 부모를 갖는건 불가
		//한명의 부모가 여러명의 자녀를 갖는건 가능
		//상속관계의 최상위에는 object
		//object는 모든 타입을 받아들일 수 있는 최상위 객체
	}
}

실행 결과


Animal 클래스 (부모)

package ex2_animal;

public class Animal {
	private int eye = 2, leg = 4;
	
	public int getEye() {
		return eye;
	}
	public int getLeg() {
		return leg;
	}
}

 

Cat 클래스 (자식1)

package ex2_animal;

public class Cat extends Animal{
	//eye, leg를 Animal 클래스에서 상속받음
	String cute = "귀엽다";
}

 

Lion 클래스 (자식2)

package ex2_animal;

public class Lion extends Animal{
	String galgi = "갈기가 풍성하다";
}

 

Snake 클래스 (자식3)

package ex2_animal;

public class Snake extends Animal{
	
	//메서드 오버라이드(라이딩) : 메서드의 재정의
	//상속관계의 객체에서 부모의 메서드를 자식이 가져와 사용하되
	//내용만 자식의 상황에 맞게 재정의 하고 나머지는 똑같아야한다
	//접근제한은 부모것보다 넓은 범위에서 사용 가능
	@Override
	public int getLeg() {
		// TODO Auto-generated method stub
		return 0;
	}
	
	String sensor = "감각이 좋다";
}

 

Main 클래스

package ex2_animal;

public class AnimalMain {
	public static void main(String[] args) {
		Cat cat = new Cat();
		System.out.printf("고양이\n");
		System.out.printf("눈 : %d\n",cat.getEye());
		System.out.printf("다리 : %d\n",cat.getLeg());
		System.out.printf("특징 : %s\n\n",cat.cute);
		
		Lion lion = new Lion();
		System.out.printf("사자\n");
		System.out.printf("눈 : %d\n", lion.getEye());
		System.out.printf("다리 : %d\n", lion.getLeg());
		System.out.printf("특징 : %s\n\n", lion.galgi);
		
		Snake snake = new Snake();
		System.out.printf("뱀\n");
		System.out.printf("눈 : %d\n", snake.getEye());
		System.out.printf("다리 : %d\n", snake.getLeg());
		System.out.printf("특징 : %s\n\n", snake.sensor);
	}
}

실행 결과


Override (오버라이드) / Overriding (오버라이딩)

부모 클래스로부터 상속받은 메서드를 자식 클래스에서 재정의하여 사용하는 것

 

Calculator 클래스 (부모)

package ex3_override;

public class Calculator {
	public int getResult(int n1, int n2) {
		return -1;
	}
}

 

CalPlus 클래스 (자식1)

package ex3_override;

public class CalPlus extends Calculator{
	@Override
	public int getResult(int n1, int n2) {
		return n1+n2;
	}
}

 

CalMinus 클래스 (자식2)

package ex3_override;

public class CalMinus extends Calculator{
	@Override
	public int getResult(int n1, int n2) {
		return n1-n2;
	}
}

 

Main 클래스

package ex3_override;

import java.util.Scanner;

public class CalMain {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.printf("첫번째 숫자 입력 : ");
		int n1 = sc.nextInt();
		System.out.printf("두번째 숫자 입력 : ");
		int n2 = sc.nextInt();
		
		CalPlus cp = new CalPlus();
		CalMinus cm = new CalMinus();
		
		System.out.printf("CalPlus : %d\n", cp.getResult(n1, n2));
		System.out.printf("CalMinus : %d\n", cm.getResult(n1, n2));
		
		sc.close();
	}
}

실행 결과

'JAVA 기초' 카테고리의 다른 글

JAVA 10-HW  (0) 2023.08.24
JAVA 10-2  (0) 2023.08.24
JAVA 9-2  (0) 2023.08.23
JAVA 9-1  (1) 2023.08.23
JAVA 8  (0) 2023.08.23