Java 2번째 - 6장(기억 할 것들)

이정민·2021년 11월 3일
0

객체 배열

참조변수 배열 == 객체 배열


Tv t1 = new Tv();
Tv t2 = new Tv();
Tv t3 = new Tv();


Tv[] tvArr = new Tv[3];
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();


				->	Product p[] = new Product[3]; //객체배열 생성
Product p1 = new Tv();		->	p[0] = new Tv();
Product p2 = new Computer();	->	p[1] = new Computer();
Product p3 = new Audio();	->	p[2] = new Audio();

//다른 방법
Product[] p = { new Tv(), new Computer(), new Audio() };


//기본 배열 만들기
---------------------------------------
//방법 1
int[] array = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;

//방법 2 (선언과 동시에 배열의 크기 지정 및 값 초기화)
int[] array1 = new int[] {1,2,3};

//방법 3 (선언과 동시에 배열의 크기 지정 및 값 초기화)
int[] array2 = {1,2,3};

//방법 4 (선언 후 기본변수에 값 초기화)int는 기본변수 Product는 참조변수
int[] array3;
array3 = {1,2,3}; // 에러
array3 = new int[]{1,2,3};



선언위치에 따른 변수의 종류


class Card
{
   String kind;			//인스턴스 변수
   int number;
   
   static int width = 100;	//클래스변수(static변수, 공유변수)
   static int height = 250;
   
   void method()
   {
      int lv = 0;		//지역변수
   }
}

Card c = new Card();
c.kind = "HEART";
Card.width = 200;




기본형 , 참조형


매개변수


기본형 매개변수 - 변수의 값을 읽기만 할 수 있다.

참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다.



static , instance


static 메서드

객체생성없이 사용 가능

클래스이름.메서드이름() 호출

언제 static을 붙이나? : (iv)인스턴스 변수를 사용하지 않을 때


instance 메서드

인스턴스 생성 후 사용 가능

참조변수.메서드이름() 호출

instance메서드를 만들려면 인스턴스 변수를 사용하고 싶을 때



static 변수
공통으로 사용 될 때 (공통 속성)

instance 변수
개별으로 사용 될 때 (개별 속성)




오버로딩(overloading)

한 클래스 안에 같은 이름의 메서드 여러 개 정의하는 것

normal --------> 메서드 : 메서드 이름 = 1 : 1

overloading ---> 메서드 : 메서드 이름 = n : 1


오버로딩 성립 조건

  1. 메서드 이름이 똑같아야 한다.

  2. 매개변수의 개수 또는 타입이 달라야 한다.

( 반환 타입은 영향없다. )


ex) 오버로딩이 맞는 예시

long add(int a, long b) { return a+b; }

long add(long b, int a) { return a+b; }

단 이 경우 메서드를 부를 때 add(3,3L) 이렇게 불러야 불러진다.
그냥 숫자들만 넣을 시 뭘 불러야 될지 몰라서 오류가 남



오버로딩의 올바른 사용 예시

매개변수는 다르지만 같은 의미의 기능을 수행 하는것이 올바른 사용 예시다.





생성자

클래스 이름과 같다.
리턴값이 없다. void 안붙인다. (iv초기화는 대입문)

Car c = new Car("white", "auto", 4);

  1. Car c --> 참조변수 c 생성

  2. new ---> 객체 생성

  3. Car("white", "auto", 4) ---> 생성자 호출


this (참조변수 this, 생성자 this)

오버로딩을 통해 여러개 만들어서 this를 통해 서로 호출 (코드 중복제거)
this("white","auto",4);



맴버변수의 초기화

  1. 명시적 초기화 (=)
    class Car {
    int door = 4; // 기본형 변수 초기화
    Engine e = new Engine(); //참조형 변수 초기화

cv,iv 초기화
  1. 자동초기화 --> 0

  2. 간단초기화 --> =

  3. 복잡초기화 --> cv static{}, iv 생성자

profile
안녕하세요.

0개의 댓글