작성 : 2024. 4. 9. 

 

들어가서 해보기

 

구름EDU - 모두를 위한 맞춤형 IT교육

구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/

edu.goorm.io

 

지난 시간에는 상속에 대해 배웠습니다.

상속 과정에서 나타나는 특징에 대해 잘 알아야 함.

  • 오버라이딩

-부모로부터 상속받은 메서드를 그대로 사용하는 것이 아니라 내용을 바꿔 사용하는 것

// 상속
public class Tvs { // 부모 클래스
	// 두 개 이상의 자식

	String color; // 색상
	boolean power;  // 전원
	int channel;  // 채널

	public void power() {
		power = !power;
	}

	public void channelUp() {
		channel++;
	}

	public void channelDown() {
		channel--;
	}

}
// 상속
public class TvCaption extends Tvs { // 자식 클래스
// Caption 은 자막처리 
	
	boolean caption;
	
	void displayCaption(String text) {
		if (caption) {
			System.out.println(text);
		}
	}
}
// 상속
public class Tv3D extends Tvs {  // 자식 클래스
// 클래스를 만들 때도 Superclass 에서 상속 가능
	boolean tv3d;

	void display3d() {
		if (tv3d) {
			System.out.println("3D 기능 활성화");
		}
	}
}
public class TvsTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		TvCaption ctv = new TvCaption();
		ctv.displayCaption("코리아 아이티");
		ctv.caption = true; // 캡션을 킨 상태에서 실행 가능!
		ctv.displayCaption("코리아 아이티");
		
		// 부모 Tvs로 부터 상속 받은 부분
		// 모든 클래스는 obiect 클래스를 상속받는다.
		ctv.channel = 10;
		System.out.println(ctv.channel);
		ctv.channelUp();
		System.out.println(ctv.channel);
		
		Tv3D tv3 = new Tv3D();
		tv3.display3d();
		tv3.tv3d = true;
		tv3.display3d();
		
		tv3.channel = 20;
		System.out.println(tv3.channel);
		tv3.channelDown();
		System.out.println(tv3.channel);

	}

}

지난 시간 배운 부분 마무리

 

  • 오버라이딩 개념과 예제 코드
package ex01;

public class Parent {
	//0409 
	// 부모클래스와 자식클래스 변수 이름이 같을 때
	
	int x;
	int y;

}
```java
package ex01;

public class Child extends Parent {
//	int x = 20;
//	
//	void varTest() {
//		System.out.println(x); // 나의 x 
//		System.out.println(this.x); // 나의 x 
//		System.out.println(super.x); // 부모의 x
		
		// this() 나 자신의 생성자 호출
		// super() 부모의 생성자 호출
		// 자식에서 부모의 기본 생성자 생략 가능하지만 오류가 발생하기도.
		// 하나 이상의 생성자 정의 필요
		// 부모의 생성자를 골라서 호출 할 수도 있음.
	
	int z;
	
//	Child() {
//		super();
//	}  // 기본 생성자 생략가능
}
```

 

  • 패키지

이름 지을 때 회사에서는 도메인을 사용 ( 예. com.naver.news )

이름은 무조건 소문자로! (약속)

 

circle 패키지

package circle;

public class Circle {
	
	public int radius; // 반지름
	public final double PI = 3.14;
	
	public Circle (int radius) {
		this.radius = radius;
	}
	
	public double getArea() {
		return radius * radius * PI;
	}
}

 

rectangle 패키지

package ractangle;

public class Ractangle {
	public int w;
	public int h;

	public Ractangle(int w, int h) {
		this.w = w;
		this.h = h;
	}

	public int getArea() {
		return w * h;
	}

}

 

circle 패키지와 ractangle 패키지를 합쳐 동작시켜보자!

 

default 패키지에 작성된 메인함수

//0409

// 다른 패키지 가져오기
import circle.Circle;
import ractangle.Ractangle;

public class FigureAreaTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// 같은 패키지가 아닐 때 사용 방법
		Circle c = new Circle(5);
		double circleArea = c.getArea();
		
		System.out.println("원의 넓이 : " + circleArea);
		
		Ractangle r = new Ractangle(10, 5);
		int ractangleArea = r.getArea();
		
		System.out.println("사각형의 넓이 : " + ractangleArea);
	}

}

 

  • 접근제어자 (접근제한자)
아무것도 안쓰여 있다면 default   상속받는다면 가능 -> protected
         private < (default < protected) < public
         해당클래스         동일패키지         모든패키지

클래스 : default, public

멤버 변수, 메서드, 생성자 : private, default, protected, public

생성자의 접근제어자는 클래스의 접근제어자와 동일

지역 변수 : 쓸 수 없다

 

private 한 생성자를 정의한 객체를 싱글톤 객체라고 함 : new 연산 불가

package circle2;

import circle.Circle;
// 원주율 구하기
public class CircleChild extends Circle {
	
	// 부모생성자 오버로딩 상태라면 생성자 반드시 추가
	public int angle;
	
	public CircleChild(int radius, int angle) {
		super(radius);
		this.angle = angle;
	}
	
	// 부모 것 그대로 쓰려면 오버라이딩(재정의)
	public double getArea() {
		return 2 * radius * PI * (angle/360.0);
	}
}
원주율 구하기도 추가!

//0409

// 다른 패키지 가져오기
import circle.Circle;
import circle2.CircleChild;
import ractangle.Ractangle;

public class FigureAreaTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// 같은 패키지가 아닐 때 사용 방법
		Circle c = new Circle(5);
		double circleArea = c.getArea();
		c.setRadius(20);
		
		System.out.println("원의 넓이 : " + circleArea);
		
		Ractangle r = new Ractangle(10, 5);
		int ractangleArea = r.getArea();
		
		System.out.println("사각형의 넓이 : " + ractangleArea);
		
		CircleChild cc = new CircleChild(5, 30);
		double circlechildArea = cc.getArea();
		
		System.out.println("원주율 : " + cc.getArea());
		
	}

}

 

  • 상속구조에서 나타나는 특징 - 오버로딩, 슈퍼(부모), 패키지 분류와 접근제어자, protected(상속)

 

또, 아래의 것들이 있음

  • 다향성

객체 관계에서 나타나는 특징, 어떤 하나의 대상이 여러 방향으로 해석되어지는 것

***** 오버라이딩이 되었을 땐 오버라이딩을 따름.

  • 캡슐화
  • 인터페이스

'2024_UIUX 국비 TIL' 카테고리의 다른 글

UIUX _국비과정 0412 [학생성적관리 시스템 및 첫 조별과제]  (0) 2024.05.29
UIUX _국비과정 0411  (0) 2024.05.29
UIUX _국비과정 0408  (0) 2024.05.29
UIUX _국비과정 0405  (0) 2024.05.29
UIUX _국비과정 0404  (0) 2024.05.29

+ Recent posts