생활코딩 JAVA - 상속

3357 단어 JavaJava

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. 수업을 마치며

다음으로 공부할 주제




질서 정연한 혼돈은 자유다.

이것들은 규제라고 볼 수 있다.

좋은 웹페이지 즐겨찾기