31일차 java 연산(2023-02-06)

권단비·2023년 2월 6일
0

IT

목록 보기
58/139

[Eclipse 연습]

[계산]
//[1번] 다음 main() 메소드와 실행 결과를 참고하여 
//TV를 상속받은 ColorTV 클래스를 작성하라.
//32인치 1024컬러
class TV3 {
	private int size; // private을 사용하는 이유 : 정보은닉

	public TV3(int size) {
		this.size = size;
	}

	protected int getSize() {
		return size;
	}
}

class ColorTV1 extends TV3 {
	private int color;
	public ColorTV1(int size, int color) {
		super(size);
        // 부모 클래스가 가장 먼저 메모리에 올라가야하기 때문에 super(size)를 먼저 써야한다.
		this.color = color;
	}

	public void printProperty() {
		System.out.println(super.getSize() + "인치 " + this.color + "컬러");
	}
}

public class Test43 {
	public static void main(String[] args) {
		ColorTV1 myTV = new ColorTV1(32, 1024);
		myTV.printProperty();
	}
}
[결과값]
32인치 1024컬러

[계산]
public class Test43 {
	public static void main(String[] args) {
		int[][] arr = { { 11 }, { 22, 33 }, { 44, 55, 66 } };
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j] + "\t");
			}
			System.out.println("");
		}
	}
}
[결과값]
11	
22	33	
44	55	66	

[계산]
class A2 {
	public A2() {
	}
}
class B2 extends A2 {
	public B2() {
		super();
	}
}
public class Test43 {
	public static void main(String[] args) {
		B2 b = new B2(); // 했을시 컴파일러가 넣는 코드를 완성하시오.
	}
}

[다중상속]

자바는 다중 상속을 지원하지 않는다.
한 클래스에서 상속할 수 있는 최대 클래스의 수는 한 개이다.
같은 변수명을 사용할 수 있기 때문에 다중 상속을 지원하지 않는다.
통계학적으로 소프트웨어 독립성이 중요하다.

class AAA{...}
class MMM extends AAA {...}
class ZZZ extends MMM {...}

[상속과 IS-A 관계]

IS-A 관계인지 아리까리하면 HAS-A이다!!
IS-A : ~은 ~이다 관계
HAS-A

[IS-A ex]
사람은 동물이다.
소는 동물이다.
새는 동물이다.

class 동물{}
class 사람 extends 동물{}
class 소 extends 동물{}
class 새 extends 동물{}

-----------------------
[HAS-A ex]
CPU는 컴퓨터이다.(x)
메모리는 컴퓨터이다.(x)

class Computer{
Cpu cpu;
Memory memory;}
[계산]
class MobilePhone {
	protected String number; // 전화번호

	public MobilePhone(String number) {
		this.number = number;
	}

	public void answer() {
		System.out.println("Hi~ from " + this.number);
	}
}

class SmartPhone extends MobilePhone {
	private String androidVer; // 안드로이드 운영체제 네임(버전)

	public SmartPhone(String number, String ver) {
		super(number);
		this.androidVer = ver;
	}

	public void playApp() {
		System.out.println("App is running in " + androidVer);
	}
}

public class Test43 {
	public static void main(String[] args) {
		SmartPhone phone = new SmartPhone("010-555-777", "Nougat");
		phone.answer(); // 전화를 받는다.
		phone.playApp(); // 앱을 선택하고 실행한다.
	}
}
[결과값]
Hi~ from 010-555-777
App is running in Nougat

[메소드 오버라이딩]

polymorphism(다형성) + 함수 오버라이딩 = 자바의 70%이다.
polymorphism(다형성) : 부모는 자식

class A{
int a=0;
void printA(){
sysout(a);
}}

class B extends A{
int b;
void printB();
sysout(b);
}}

main{
A a = new A();
a.print(a); // 가능

B b = new B();
b.print A(); // 가능
b.print B(); // 가능

A a = new B(); // 부모 = 자식 | 가능
B b = new A(); // 자식 = 부모 | 오류 발생
[계산]
class MobilePhone {
	protected String number; // 전화번호

	public MobilePhone(String number) {
		this.number = number;
	}

	public void answer() {
		System.out.println("Hi~ from " + this.number);
	}
}

class SmartPhone extends MobilePhone {
	private String androidVer; // 안드로이드 운영체제 네임(버전)

	public SmartPhone(String number, String ver) {
		super(number);
		this.androidVer = ver;
	}

	public void playApp() {
		System.out.println("App is running in " + androidVer);
	}
}

public class IsA {
	public static void main(String[] args) {
		SmartPhone ph1 = new SmartPhone("010-555-777", "Nougat");
		ph1.answer(); // 전화를 받는다.
		ph1.playApp(); // 앱을 선택하고 실행한다.

		MobilePhone ph2 = new SmartPhone("010-999-333", "Nougat");
		ph2.answer();
		// ph2.playApp(); 부모 클래스에서 자식 클래스의 함수를 불러올 수 없다.
		System.out.println();
	}
}
[결과값]
Hi~ from 010-555-777
App is running in Nougat
Hi~ from 010-999-333

0개의 댓글