생활코딩 JAVA - 상속
1. 수업소개
어떤클래스가 있을때 클래스가 가지고 잇는 변수와 메소드를 확장,상속해서 다른 클래스가 갖도록 하는것
재사용성, 유지보수, 가독성 향상 코드의 양 줄이기가능
class Cal{
public int sum(int v1, int v2) {
return v1+v2;
}
}
class Cal3 extends Cal{
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal();
System.out.println(c.sum(2, 1));
Cal3 c3 = new Cal3();
System.out.println(c3.sum(2, 1));
}
}
extends를 사용하면 확장, 상속하여 사용 가능
2. 기능의 개선과 발전
부모클래스에 없는 기능을 추가하기 -> Overriding 이라고 한다. 상속이 존재하는 근본적인 이유
class Cal{
public int sum(int v1, int v2) {
return v1+v2;
}
}
class Cal3 extends Cal{
public int minus(int v1, int v2) {
return v1-v2;
}
// Overriding : 덮어쓰다
public int sum(int v1, int v2) {
System.out.println("Cal3!!");
return v1+v2;
}
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal();
System.out.println(c.sum(2, 1));
Cal3 c3 = new Cal3();
System.out.println(c3.sum(2, 1));
System.out.println(c3.minus(2, 1));
System.out.println(c3.sum(2, 1));
}
}
3. Overriding vs Overloading
Overriding : 부모클래스 위에 올라타서 덮어쓰기 -> 재정의
Overloading : 과적하다, 너무 많이 탑재하다, 상속과 상관 없다.
자바는 같은 이름의 메소드를 여러개 과적할 수 있다. 어떻게? 형태만 다르면
class Cal{
public int sum(int v1, int v2) {
return v1+v2;
}
}
class Cal3 extends Cal{
public int minus(int v1, int v2) {
return v1-v2;
}
// Overriding : 덮어쓰다
public int sum(int v1, int v2) {
System.out.println("Cal3!!");
return v1+v2;
}
// Overloading
public int sum(int v1, int v2, int v3) {
return v1+v2+v3;
}
}
4. this & super
this : 자기자신
super : 자신의 부모
class Cal{
public int sum(int v1, int v2) {
return v1+v2;
}
// Overloading
public int sum(int v1, int v2, int v3) {
return this.sum(v1,v2)+v3;
}
}
class Cal3 extends Cal{
public int minus(int v1, int v2) {
return v1-v2;
}
// Overriding : 덮어쓰다
public int sum(int v1, int v2) {
System.out.println("Cal3!!");
return super.sum(v1, v2);
}
}
super는 부모 클래스를 계승 발전, this는 자기 자신을 호출하여 계승
5. 상속과 생성자
생성자 : 메소드명이 클래스명과 동일하고 리턴 자료형이 없는 메소드
객체변수에 값을 무조건 설정해야만 객체가 생성될 수 있도록 강제하는 방법
class Cal{
int v1, v2;
Cal(int v1, int v2){
this.v1 = v1; this.v2 = v2;
System.out.println("Cal init!!");
}
public int sum() {return this.v1+v2;}
}
class Cal3 extends Cal{
Cal3(int v1, int v2) {
super(v1, v2);
System.out.println("Cal3 init!!");
}
public int minus() {return this.v1-v2;}
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal(2,1);
Cal3 c3 = new Cal3(2,1);
System.out.println(c3.sum()); //3
System.out.println(c3.minus()); //2
}
}
6. 수업을 마치며
다음으로 공부할 주제
질서 정연한 혼돈은 자유다.
이것들은 규제라고 볼 수 있다.
Author And Source
이 문제에 관하여(생활코딩 JAVA - 상속), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@chss3339/JavaInheritance저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)