작성 : 2024. 4. 9.
들어가서 해보기
지난 시간에는 상속에 대해 배웠습니다.
상속 과정에서 나타나는 특징에 대해 잘 알아야 함.
- 오버라이딩
-부모로부터 상속받은 메서드를 그대로 사용하는 것이 아니라 내용을 바꿔 사용하는 것
// 상속
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 |