Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

Full-Stack 개발자가 되려는 작은 개발자의 블로그

객체 지향 실습3 본문

강의 정리/Java

객체 지향 실습3

jhjin 2020. 3. 19. 15:53

생성자(Constructor)

    - 인스턴스가 생성 될 때 마다 호출되는 '인스턴스 초기화 메소드'

    - 인스턴스가 변수의 초기화 또는 인스턴스 생성 시 수행해야 할 작업을 작성

    - 몇 가지 조건을 제외하고는 메소드와 같다.

    - 모든 클래스에는 반드시 하나 이상의 생성자가 있어야한다.

조건

    1. 생성자의 이름은 클래스의 이름과 같아야 한다.

    2. return이 없다.

    class 클래스명{

        //생성자

        클래스명(매개변수목록){...}

    }

 

this 란?

    - 인스턴스 자신의 주소를 저장하는 내부 필드

    - 인스턴스 생성 시 자동으로 만들어져 주소를 저장함.

    - 여러 인스턴스가 존재 할 경우 각 인스턴스의 필드를 구별하기 위해 사용

    - 매개 변수와 필드(멤버)변수의 구분을 위해 사용

 

this 사용

    1. 매개변수(지역변수)와 멤버변수(필드)를 같은 이름으로 사용 할 경우 멤버변수애 this.을 붙인다.

    2. 같은 클래스의 생성자에서 다른 생성자를 호출 할 대 다른 생성자는 this(파라미터)로 호출한다.

 

getter/setter 자동 생성 

 

멤버의 종류

1. 클래스 멤버(static 멤버)

    - 변수나 메소드 앞에 static 키워드가 붙는 멤버

    - 인스턴스를 생성하지 않아도(new를 하지 않아도)사용 할 수 있다.

    - 다른 클래스에서 사용 할 경우

        ▶ 클래스이름.변수 = 값;

        ▶ 클래스이름.메소드();

        ▶ 변수 = 값;

         메소드();

2.인스턴스 멤버

    - 변수나 메소드앞에 static 키워드가 붙지 않는 멤버

package test0317;

class Card{
	public static int width = 100;
	public static int height = 250;
	
	public String kind;
	public int number;
	
}
public class CardTest {
	//운영체제(시스템)가 호출한다. -콜백 메소드
	public static void main(String[] args) {
		//static 멤버는 인스턴스 생성 전 클래스이름으로 접근 가능
		Card.width=100;
		Card.height=350;
		
		Card c1=new Card();
		c1.kind="Heart";
		c1.number=7;
		
		Card c2=new Card();
		c2.kind="Spade";
		c2.number=4;
		
		System.out.println("c1은 "+c1.kind+"모양이고 번호는 "+c1.number+" 이며, "
				+ "크기는 "+Card.width+" X "+Card.height+"이다");
		System.out.println("c2은 "+c2.kind+"모양이고 번호는 "+c2.number+" 이며, "
				+ "크기는 "+Card.width+" X "+Card.height+"이다");
		 
		
	}
}

Card.height=300;
Card.width=50;

System.out.println("c1은 "+c1.kind+"모양이고 번호는 "+c1.number+" 이며, "
		+ "크기는 "+Card.width+" X "+Card.height+"이다");
System.out.println("c2은 "+c2.kind+"모양이고 번호는 "+c2.number+" 이며, "
		+ "크기는 "+Card.width+" X "+Card.height+"이다");

 

Comments