본문 바로가기

자바

JAVA-0502

상속

상속이란?

 - 기존에 있는 클래스의 맴버 변수나 메소드를 물려받아 새로운 클래스를 만드는 것

 - 상속을 통하여 객체지향 프로그램의 주요 특징인 코드의 재사용성을 구현할 수 있다.

 

상속받는 클래스

 - 서브 클래스, 하위 클래스, 자식 클래스

 

상속하는 클래스

 - 수퍼 클래스, 상위 클래스, 부모 클래스

 

 

클래스 정의의 예

맴버 변수

자동차 - 차 기종, 색상, 제조회사, 속도

택시 - 미터기, 무게

트럭 - 무게

 

메소드

자동차 - 속도를 올린다, 속도를 내린다, 출발, 정지

택시 - 미터기를 올린다, 내린다

트럭 - 짐을 싣는다, 내린다.

 


1번 - 클래스 상속 기초

package sevenClass;

public class Test0502_01 {
	public static void main(String[] args) {
		Student sm1 = new Student();
		sm1.name = "홍길동";
		sm1.printmyself();
		sm1.hakbun = "20710";
		sm1.printhakbun();
	}
}

class Human{
	String name;
	void printmyself() {
		System.out.printf("이름은 %s\n", this.name);
	}
}

class Student extends Human{
	String hakbun;
	void printhakbun() {
		System.out.printf("학번은: %s", this.hakbun);
	}
}

 

 

Human Class

이름 변수 생성

이름은 출력하는 메소드 생성

 

Student Class

Human Class를 상속 받아서 Human 클래스 안에 변수와 메소드를 사용 가능

학번 변수 생성

학번을 출력하는 메소드 생성

 

Main

학생 객체 sm1 생성

sm1의 이름을 홍길동으로 설정

sm1의 이름 출력

 - 학생 클래스는 사람 클래스를 상속받아서 클래스의 변수, 메소드 사용 가능

 

sm1의 학번을 지정

학번 출력

 

 

결과

이름은 홍길동
학번은: 20710

 

 


2번 - 자동차

package sevenClass;

public class Test0502_02 {
	public static void main(String[] args) {
		Car c1 = new Car();
		c1.carname = "벤틀리";
		c1.printname();
		
		Truck t1 = new Truck();
		t1.carname = "프론티오";
		t1.t = 3;
		t1.printname();
		t1.printt();
		
		SportsCar s1 = new SportsCar();
		s1.carname = "람보르기니";
		s1.velocity = 100;
		s1.printname();
		s1.speedUp(30);
	}
}

class Car{
	String carname;
	void printname() {
		System.out.printf("차의 이름은: %s\n", this.carname);
	}
}

class Truck extends Car{
	int t;
	void printt() {
		System.out.printf("적재할 수 있는 무게는: %d\n", this.t);
	}
}

class SportsCar extends Car{
	int velocity;
	void speedUp(int v) {
		this.velocity += v;
		System.out.printf("현재 속력은: %d\n", this.velocity);
	}
}

 

 

Car Class

차이름 변수 생성

차이름 출력하는 메소드 생성

 

Truck Class

Car 클래스를 상속받는 클래스

적재량을 나타내는 t 변수 생성

t를 출력하는 메소드 생성

 

SportsCar Class

Car 클래스를 상속받는 클래스

속도 변수 생성

속도 증가를 출력하는 메소드 생성

 

Main

c1, t1, s1 객체 생성

c1 이름 지정, 출력

t1 이름 지정, 적재량 지정, 출력

s1 이름 지정, 속도 지정, 출력

 

 

결과

차의 이름은: 벤틀리
차의 이름은: 프론티오
적재할 수 있는 무게는: 3
차의 이름은: 람보르기니
현재 속력은: 130

 

 


3번 - Sports

package sevenClass;

public class Test0502_03 {
	public static void main(String[] args) {
		BaseBall b1 = new BaseBall("야구", 10);
		Soccer s1 = new Soccer("축구", 11);
		
		System.out.printf("종목은: %s\n", b1.getName());
		System.out.printf("선수 수는: %s\n", b1.getPlayer());
		b1.rule();
		
		System.out.printf("종목은: %s\n", s1.getName());
		System.out.printf("선수 수는: %s\n", s1.getPlayer());
		s1.rule();
	}
}

class Sports{
	String name;
	int player;
	Sports(){}
	Sports(String n, int p){
		this.name = n;
		this.player = p;
	}
	int getPlayer() {
		return this.player;
	}
	String getName() {
		return this.name;
	}
	void rule() {
		System.out.println("경기의 룰은 해당 클래스에서 생성합니다.");
	}
}

class BaseBall extends Sports{
	BaseBall(String n, int p){
		super(n, p);
	}
	void rule() {
		System.out.println("야구룰은 --에게 물어볼것");
	}
}

class Soccer extends Sports{
	Soccer(String n, int p){
		super(n, p);
	}
	void rule() {
		System.out.println("축구룰은 --에게 물어볼것");
	}
}

 

 

Sports Class

이름, 사람 수 변수 생성

생성자 생성

겟터 생성

rule 메소드 생성

 

BaseBall Class

Sports Class를 상속받는 클래스 생성

sports의 생성자를 호출하는 생성자를 생성

rule 메소드 생성

 

Soccer Class

Sports Class를 상속받는 클래스 생성

sports의 생성자를 호출하는 생성자를 생성

rule 메소드 생성

 

Main

야구 객체 b1, 축구 객체 s1 생성

종목 출력, 사람 수 출력

룰 출력

 

 

결과

종목은: 야구
선수 수는: 10
야구룰은 --에게 물어볼것
종목은: 축구
선수 수는: 11
축구룰은 --에게 물어볼것

 

 

 

 

2024.04.22 - [자바] - JAVA - 0422

 

JAVA - 0422

1번 - 최대, 최소, 합, 평균 구하기 package sevenClass; public class Test0422_01 { public static void main(String[] args) { int[] arr = {2, 56, 88, 41, 3, 78, 95, 64, 43, 33}; double[] arr2 = {4.4, 5.8, 89.7, 95.4, 77.8, 64.3, 34.9}; System.out.pr

conewbie.tistory.com

 

'자바' 카테고리의 다른 글

JAVA - 0516  (0) 2024.05.16
JAVA - 0509  (0) 2024.05.09
JAVA - 0422  (0) 2024.04.22
JAVA - 0415  (0) 2024.04.15
JAVA - 0411  (0) 2024.04.11