[계산] 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
・초기화 방법
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컬러