Java practice_240116

Choi Suyeon·2024년 1월 16일
0

variable Array(가변배열)(이어서)

  • 행마다 열의 개수가 다른 배열
    이차원 배열 형식

문법

  1. 선언
    데이터형[][] 배열명 = null;

  2. 생성

  • 주의 : 행만 설정한다. 열은 설정하지 않는다.
    배열명 = new 데이터형[행의수][];

3. 행마다 열을 생성
배열명[행의 번호] = new 데이터형[열의 수];
배열명[행의 번호] = new 데이터형[]{초기 값,,,,,};

  1. 값할당
  • 주의 : 배열의 인덱스에 주의
    배열명[행의 번호][열의 번호] = 값;
  1. 값 사용
  • 주의 : 배열의 인덱스에 주의
    배열명[행번호][열번호]
public class UseVariableArray {
	public UseVariableArray() {
		//1. 선언)
		int[][] arr2 = null;
        
		//2. 생성 - 행의 수만 설정하여 생성.
		arr2 = new int[5][];
        
		//3. 행마다 열을 생성.
		arr2[0] = new int[5];
		arr2[1] = new int[2];
		arr2[2] = new int[] {1, 2, 3, 4, 5, 6, 7};
        // 가변배열은 초기화시 생성코드(new 데이터형)를 생략할 수 없다.
//		arr2[3] = {1, 2, 3, 4, 5, 6, 7}; 
		arr2[3] = new int[] {1};
		arr2[4] = new int[] {1, 2, 3};
		
		//4. 값 할당 - 행마다 열의 수가 다르므로 주의
		arr2[0][0] = 2024;
		arr2[0][4] = 42;
		arr2[1][0] = 1;
		arr2[1][1] = 16;
		
		//5. 값 사용
		System.out.println(arr2[0][0]);
		System.out.println();
		
		//일괄처리
		for (int i = 0; i < arr2.length; i++) {
			for (int j = 0; j < arr2[i].length; j++) {
				System.out.printf("%d", arr2[i][j]);
			}//end for
			System.out.println();
		}//end for
  }//UseVariableArray

결과

2024

202400042
116
1234567
1
123

class(사용자 정의 데이터 형)

  • 참조형 데이터형 : 값은 메모리에 다른 곳에 생성되고 그 시작 주소를 저장하는 데이터형
  • 사용자 정의 데이터형 : 언어에서 제공하는 데이터 형을 조합하여, 새로운 이름의 데이터 형을 만드는 것.
    => 예) 학생의 정보를 저장 :
    단일데이터가 아님. 자바에서 제공하는 int, char, long 형으로는 값을 저장할 수 없다.
    학생의 정보는 String, int, double 등으로 묶여진 데이터형이다.

문법

참조형 데이터 형이므로 객체를 생성해 사용.

  1. 선언
    데이터형 변수명 = 값;

  2. 생성
    변수명 = new Constructor();

사용자 정의 데이터형을 사용한 배열

: 방 하나에 여러 개의 값을 저장할 수 있다.

  1. 배열 생성
    StudentVO[] stuArr = new StudentVO[3]; //번호, 이름, 나이

  2. 값 할당
    stuArr[0] = new StudentVO(1, "쵸파", 17);

  3. 방의 값을 변경 => setter method사용
    배열명[인덱스].method를 호출
    stuArr[0].setAge(25);

  4. 값 얻기 => getter method사용
    String name = stuArr[0].getName();

클래스명 객체명 = 배열명[인덱스];
StudentVO sVO = stuArr[0];
String name = sVO.getName

inheritance (상속)

  • OOP언어의 3가지 특징 중 하나.
    코드의 재 사용성 향상.
    => 부모 클래스에 정의된 자원(변수, method)을 자식 클래스에서 자신의 것처럼 사용하는 것.

  • 클래스간의 계층이 생성.

코드의 재사용성
자식클래스명 객체명 = new 자식클래스의 생성자();

객체명.setAge(20);//자식클래스의 객체명으로 부모 클래스명 method를 사용
객체명.getAge();//자식클래스의 객체명으로 부모 클래스명 method를 사용

  • extends 키워드로 자식클래스에서 부모클래스를 선택하는 것.
    부모는 자식을 모른다.
    부모에는 자식의 정보가 없지만, 자식에는 부모의 정보가 존재한다.

상속 : is a 관계

자식은 부모이다.(자식클래스에서는 부모클래스의 기능을 자신의 것처럼 사용.)

문법

: 접근지정자 class 클래스명 extends 부모클래스명 implements 구현인터페이스명,,,{}

상속할 부모클래스는 하나만 정의가능. => 단일 상속만 지원
구현할 인터페이스는 여러개 정의가능.
접근지정자 : public(패키지 외부에서 접근가능), package(같은 패키지에서 접근가능.)

  • 단일 상속만 지원 : 부모가 명확. 클래스가 필요이상 커지지 않음.
  • 부모클래스가 먼저 생성되고, 자식 클래스가 생성.

super

상속 관계에서 부모 클래스의 자원을 식별하여 사용할 수 있는 키워드.
method형식, 키워드 형식 두가지로 사용할 수 있다.

keyword형식

자식클래스의 변수나 method가 부모클래스의 이름과 같다면 super를 사용하여 부모의 변수와 자식의 변수를 식별하여 사용할 수 있다.

  • this와 다르게 super는 출력할 수 없다.
    instance영역에서만 사용할 수 있다.

문법

super.변수명 : 자식과 부모가 같은 이름의 변수를 가질 때
super.method명(); : 자식과 부모가 같은 이름의 method 가질 때, super를 붙이면 부모 method 호출

method형식

부모클래스의 생성자를 호출할 때 사용.
모든 클래스의 생성자 첫줄에는 부모클래스의 기본생성자를 호출하는 super()가 숨어있다.(부모클래스의 기본 생성자가 없다면 error발생)

문법

부모클래스의 기본 생성자를 호출
super();

부모클래스의 매개변수 있는 생성자 호출
suepr(값,,,,);

0개의 댓글