드레:
코딩 뿌시기
드레:
전체 방문자
오늘
어제
  • 분류 전체보기 (268)
    • Python (74)
      • Python 기초 (42)
      • Numpy (8)
      • Pandas (22)
    • Machine Learning (31)
      • Machine Learning (1)
      • Deep Learning (27)
    • AWS (22)
      • RDS (3)
      • EC2 (9)
      • Lambda (8)
      • S3 (2)
    • MySQL (24)
    • Git (8)
    • Streamlit (12)
    • REST API (22)
    • Java (24)
    • Android (36)
    • Debugging (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Callback
  • AWS Lambda
  • aws s3
  • flask
  • 깃이그노어
  • fine tuning
  • GET
  • 네이버 API
  • EC2
  • tensorflow
  • JWT
  • CNN
  • 안드로이드 스튜디오
  • Lambda
  • github
  • 딥러닝
  • rest api
  • 액션바
  • API
  • Python
  • Java
  • Ann
  • AWS
  • pandas
  • Streamlit
  • Transfer Learning
  • 서버리스
  • serverless
  • Retrofit2
  • volley

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
드레:

코딩 뿌시기

Java - 클래스 상속(Inheritance), 오버라이딩(Overriding)
Java

Java - 클래스 상속(Inheritance), 오버라이딩(Overriding)

2023. 1. 19. 18:14

1. 상속(Inheritance)

 

  • 자식 클래스는 부모 클래스의 모든 속성을 상속 받고 사용 가능하다.
  • 상속 받은 메소드는 필요에 따라 자식 클래스에서 따로 재정의 할 수 있다. (메소드 오버라이딩)
  • 자식 클래스 정의 방식은 '자식클래스이름 extends 부모클래스'로 정의한다.
  • 자식 클래스 호출시 부모 클래스도 함께 호출 된다.
  • 자식 클래스의 경우 우리 눈에는 안 보이지만 상속 받은 코드가 숨어있다고 생각하면 된다.

 

 

2. 메소드 오버라이딩(Method Overriding)

 

부모 클래스의 메소드에 약간의 기능을 추가한 자식 클래스의 메소드를 만들 경우,

새로운 메소드를 만들지 않고 상속받은 함수를 재활용하여 코드를 작성할 수 있다.

이를 오버라이딩이라고 한다.

  • 오버라이딩: 부모 클래스에서 상속받은 메소드를 재정의하는 것

 

 

3. super 키워드

 

  • super는 자신이 상속받은 부모 클래스에 대한 레퍼런스 변수로, 부모 클래스의 멤버에 접근할 때 사용한다.
  • super() 는 자식 클래스의 생성자에서 부모 클래스의 생성자를 호출하기 위해서 사용된다.

 

 

4. 샘플 코드

// 부모 클래스

package model;

public class Person {

	int num;
	String name;
	String dept;
	String address;

	public Person(){
		
	}
		
	public Person(int num, String name, String dept, String address){
		this.num = num;
		this.name = name;
		this.dept = dept;
		this.address = address;
	}
	
	public void print() {
		System.out.println(num);
		System.out.println(name);
		System.out.println(dept);
		System.out.println(address);
	}
		
}

 

// 자식 클래스

package model;

// Professor 클래스는 Person 클래스를 상속한다.
public class Professor extends Person{

//	int num;
//	String name;
//	String dept;
//	String address;
	
	String[] subjects;
	
	public Professor(){
		
	}
	


	public Professor(int num, String name, String dept,
			String address, String[] subjects) {
		// 수퍼클래스의 생성자 호출하는 코드.
		super(num, name, dept, address);
		this.subjects = subjects;
		
	}

	// 오버라이딩
	// Person의 print메소드에 추가로 subjects까지 출력하는 메소드
	@Override
	public void print() {
		
		super.print();
		
		for (int i = 0; i < subjects.length; i++) {
			System.out.println(subjects[i]);
		}
		
	}

 

// 메인 클래스

package main;

import model.Professor;

public class EduMain {

	public static void main(String[] args) {
		
		Professor pf1 = new Professor(1, "김나나", "컴공과", "서울시 마포구",
                                            new String[] {"자바", "파이썬"});
		
		pf1.print();
				
	}

}

 

pf1.print() 결과

 

'Java' 카테고리의 다른 글

Java - 추상 클래스 (Abstract Class)  (0) 2023.01.20
Java - 변수의 종류와 메모리 구조  (0) 2023.01.20
Java - 접근제어자와 getter/setter, 캡슐화  (0) 2023.01.19
Java - this 키워드  (0) 2023.01.19
Java - 생성자(Constructor)  (0) 2023.01.19
    'Java' 카테고리의 다른 글
    • Java - 추상 클래스 (Abstract Class)
    • Java - 변수의 종류와 메모리 구조
    • Java - 접근제어자와 getter/setter, 캡슐화
    • Java - this 키워드
    드레:
    드레:

    티스토리툴바