새소식

💻 Computer/🦀 Java

(Java) Class 상속

  • -

Class 상속 이란?

말 그대로 클래스의 모든 것을 상속받는 것

 

이렇게 말하면 어려 울 수 있으니 다시 찬찬히 설명해 보면.

 


상속(extends)

 

package no;

public class Main {

	public static void main(String[] args) {
		
        //여기는 좀 뒤에 설명 할것
		Knife p1 = new Bow();
		p1.move();
	}

}


//class Knife 정의
class Knife{
	public void move(){
		System.out.println("OMG");
	}
}

// Class Knife를 상속받음 (extends)
class Bow extends Knife{
	
}

위 코드에서 볼 수 있듯이 extends를 사용하여

상위 클래스로부터 상속받을 수 있다.

 

 


상속받으면 무슨 일이 일어날 까?

 

위의 코드를 다시 보면 Class Knife를 Class Bow가 상속받고 있다.

 

그림으로 보자면

 

Class Knife 를 상속 받고 있는 Class Bow
Class Knife 를 Class Bow가 상속 받고 있다.

 

이처럼 상속을 받게 되면 상위 클래스의 모든 것을 쓸 수 있다.

(접근 제한자에 대한 것은 나중에.....)

 


선언 법

 

package no;

public class Main {

	public static void main(String[] args) {
		
        
        //왜 이렇게 선언이 되었는가?
		Knife p1 = new Bow();
		p1.move();
	}

}

class Knife{
	public void move(){
		System.out.println("OMG");
	}
}

// Class Knife를 상속받음
class Bow extends Knife{

}

쉽게 생각해 보자면

 

int blank = 1;

String hong = "hello";

//위 처럼 자료형을 먼저 지정 해주고 Int는 숫자 String은 문자열을 써주는 것과 같다.

 

 


클래스 오버 라이딩(Class Override)

 

오버라이딩 이란 상위 클래스에서 정의된 것을

하위 클래스가 재 정의하는 것이다

 

코드를 보자 

package no;

public class Main {

	public static void main(String[] args) {
		
		Knife p1 = new Bow();
		p1.move();
	}

}

class Knife{
	public void move(){
		System.out.println("OMG");
	}
}

// Class Knife를 상속받음
class Bow extends Knife{

//move() 함수를 재정의 함 (Class Override)
	public void move() {
		System.out.println("NONO");
	}
    
}

 

 


예제

package no;

public class Main {

	public static void main(String[] args) {
		
		Knife p1 = new MiniKnife2();
		p1.move();
	}

}

class Knife{
	public void move(){
		System.out.println("OMG");
	}
}

// Class Knife를 상속받음
class Bow extends Knife{
	
}

class MiniKnife extends Knife{
	public void mini(){
		System.out.println("so mini");
	}
}

class MiniKnife2 extends MiniKnife{
	
}

위 코드의 출력은 어떻게 될까?

 

 

//출력

OMG

 

 

그림으로 보면

 

Knife를 상속 받은 MiniKnife를 상속 받은 MiniKnife2

좀 복잡 하긴해도 

결국은 Knife를 상속 받은 MiniKnife를 상속 받았기 때문에

MiniKnife2는 오류 없이 잘 출력이 되는 것을 볼 수 있다

 

 

끄으으읕

'💻 Computer > 🦀 Java' 카테고리의 다른 글

java 숫자인지 판별  (0) 2022.07.02
인력 관리소 문제 (java)  (0) 2022.07.02
(Java) Class 기초  (0) 2022.06.11
(Java) 함수 기초  (0) 2022.06.11
(JAVA) 배열  (0) 2022.06.06
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.