30일차 java 연산(2023-02-03)

권단비·2023년 2월 3일
0

IT

목록 보기
56/139
[계산]
class Circe10 {
	private double r;

	public Circe10(double r) {
		this.r = r;
	}

	public double getArea() {
		return this.r * this.r * Math.PI;
	}

	public static double getArrArea(Circe10[] c) {
		double input = 0;
		for (int i = 0; i < c.length; i++) {
			input += c[i].getArea();
		}
		return input;
	}
}
public class Test40 {
	public static void main(String[] args) {
		Circe10[] circleArr = new Circe10[2];
		circleArr[0] = new Circe10(10);
		circleArr[1] = new Circe10(10);

		double areas = Circe10.getArrArea(circleArr);
		System.out.println(areas); // 628.2345234523
	}
}
[결과값]
628.3185307179587

[계산]
class Box1 {
	private int boxNum;
	private String conts;

	public Box1(int boxNum, String cont) {
		this.boxNum = boxNum;
		this.conts = cont;
	}

	public int getBoxNum() {
		return this.boxNum;
	}

	public String toString() { // Object에 toString이 있는데 거기까지 도달하지 못하도록 함수를 정의한 것.
		return boxNum + " " + conts;
	}
}

public class ForEachToStr {
	public static void main(String[] args) {
		Box1[] ar = new Box1[5];
		ar[0] = new Box1(101, "Coffee");
		ar[1] = new Box1(202, "Computer");
		ar[2] = new Box1(303, "Apple");
		ar[3] = new Box1(404, "Dress");
		ar[4] = new Box1(505, "Fairy-tale book");

		// 배열에서 번호가 505인 Box를 찾아 그 내용물을 출력하는 반복문
		for (Box1 e : ar) {
			if (e.getBoxNum() == 505) {
				System.out.println(e);
			}
		}
	}
}
[결과값]
505 Fairy-tale book

[다차원 배열]

int[] arr1 = new int[4]
arr1 ⇒ arr1[0] | arr1[1] | arr1[2] | arr1[3]

int[][] arr2 = new int[3][4]
arr2 ⇒

arr[0][0]arr[0][1]arr[0][2]arr[0][3]
arr[1][0]arr[1][1]arr[1][2]arr[1][3]
arr[2][0]arr[2][1]arr[2][2]arr[2][3]
[계산]
//2차원 배열 요소 전체의 순차적 접근은 중첩된 반복문으로...
//for문의 중첩으로...
public class TwoArray {
	public static void main(String[] args) {
		int[][] arr = new int[3][4];
		int num = 1;

// 배열에 값을 저장
		for (int i = 0; i < 3; i++) { // 행
			for (int j = 0; j < 4; j++) { // 열
				arr[i][j] = num;
				num++;
			}
		}

//배열에 저장된 값을 출력
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < 4; j++) {
				System.out.print(arr[i][j] + "\t"); // escape문자 \t : tap을 뜻함.
			}
			System.out.println();
		}
	}
}
[결과값]
1	2	3	4	
5	6	7	8	
9	10	11	12	

[2차원 배열의 초기화]

・초기화 방법
int[][] arr = {
 {11, 22, 33},
 {44, 55, 66},
 {77, 88, 99}
 
 int[][] arr = {
 {11},
 {22, 33},
 {44, 55, 66}
[계산]
// int[행][열] : 2차원 배열
public class Test41 {
	public static void main(String[] args) {
		int[][] arr = { 
				{ 11 }, 
				{ 22, 33 }, 
				{ 44, 55, 66 } };
//배열의 구조대로 내용 출력
		for (int i = 0; i < arr.length; i++) {
			// arr.length : {{},{},{}} 3칸, 행을 뜻한다.
			for (int j = 0; j < arr[i].length; j++) {
				// arr[i].length : {{11},{22,33},{44,55,66}} 각 배열의 인자수를 뜻한다.
				// [i]=0행일 때 j=0, arr[0][0]=11
				// [i]=1행일 때 j=2, arr[1][0]=22, arr[1][1]=33
				// [i]=2행일 때 j=3, arr[2][0]=44, arr[2][1]=55, arr[2][2]=66  
				System.out.print(arr[i][j] + "\t");
			}
			System.out.println();
		}
	}
}
[결과값]
11	
22	33	
44	55	66	

[상속]

코드의 재활용을 위한 문법입니다. (x)
연관된 일련의 클래스들에 대해 공통적인 규약(표준/강제)을 정의할 수 있습니다. (o)
extends: 키워드, 예약어(extends 확장)

메모리 그릴 때 부모부터 올라가고 나중에 자식이 들어간다.

Man 클래스 : 상위 클래스, 기초 클래스, 부모 클래스
BusinessMan : 하위 클래스, 유도 클래스, 자식 클래스
super : 부모에 있는 생성자 호출
[계산]
class Man { // BusinessMan class를 위한 Man class
	String name;

	public Man(String name) {
		// 생성자를 만들면 BusinessMan의 super.name = name;이 에러남.
		// 에러가 나지 않으려면 super(name);으로 기재.
		this.name = name;
	}

	public void tellYourName() {
		System.out.println("My name is " + name);
	}
}

class BusinessMan extends Man { // extends(확장) : 상속(키워드, 예약어)
	String company;
	String position;

	public BusinessMan(String name, String company, String position) {
		// super.name = name;
		super(name);
		// class Man(부모)에 있는 것을 초기화
		// super: 상속 받은 부모 객체
		// this.name & super.name 둘 다 사용 가능.
		// this(company,position); // 자기 자신 생성자 호출
		this.company = company;
		this.position = position;
	}

	public void tellYourInfo() {
		System.out.println("My company is " + this.company);
		System.out.println("My position is " + this.position);
		super.tellYourName(); // this. super. 둘 다 가능. 안 붙여도 가능.
	}
//	public void tellYourName() {
//		System.out.println("My name is " + super.name + "over");
//	}
}

public class MyBusinessMan { // 오버라이딩 : 부모 것을 덮어쓴다.
	public static void main(String[] args) {
		BusinessMan man = new BusinessMan("YOON", "Hybrid ELD", "Staff Eng");
		man.tellYourInfo();
		// man.tellYourName();
	}
}
[결과값]
My company is Hybrid ELD
My position is Staff Eng
My name is YOON

[계산]
class SuperCLS {
	public SuperCLS() {
		System.out.println("I'm Super Class");
	}
}

class SubCLS extends SuperCLS { // 부모 생성자를 상속하고 있음.
	public SubCLS() {
		// 부모 생성자 super를 default로 생성
		System.out.println("I'm Sub Class");
	}
}
//호출할 상위 클래스의 생성자 명시하지 않으면 void 생성자 호출 됨.

public class SuperSubCon {
	public static void main(String[] args) {
		new SubCLS(); // 객체 생성임. 생성자를 실행한다.
	}
}

// 객체 생성 시 먼저 부모에 있는 생성자를 호출한다.
// extends SuperCLS를 상속하고 있기 때문에, 부모 생성자의 호출값도 함께 출력
// 만약 extends SuperCLS 가 없으면 I'm Sub Class'만 출력됨.
[결과값]
I'm Super Class
I'm Sub Class

[계산]
class A {
	// 생성자가 없으면 컴파일러가 하기 자동 생성
	// public A() {
	// }
}

class B extends A {
	// 생성자가 없으면 컴파일러가 하기 자동 생성
	// public B(){
	// super();
	// }
}

public class SuperSubCon {
	public static void main(String[] args) {
		A a = new A(); // 호출하는 순간 생성자가 없기 때문에 컴파일러가 생성자와 super를 자동으로 생성해준다.
		B b = new B();

		System.out.println(b);
	}
}
[결과값]
B@71dac704

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

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

	protected int getSize() {
		return size;
	}
}

class ColorTV extends TV2 {
	int color;
	public ColorTV(int size, int color) {
		super(size);
		this.color = color;
	}

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

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

0개의 댓글