TIL(2022.02.14)

조지성·2022년 2월 14일
0

TIL

목록 보기
32/78
post-thumbnail

클래스 만들기

package ch04;

//클래스 : 여러가지 특징(상태)을 가지고 있다.
public class Dog {
	
	int age = 20; // 변경가능
	String name = "토토"; //변경가능
	String color = "하얀색"; // 변경가능
	final String type = "말티즈"; // 변경 불가능 => 상수
}
// 상태 == 필드 == 전역변수(지역변수 == 메서드 내부에서 만들어진 변수 가 아니다.)
package ch04;

public class DogApp {
	public static void main(String[] args) {
		Dog d1 = new Dog(); // heap공간에 올린다
		System.out.println(d1.name);
		System.out.println(d1.age);
		System.out.println(d1.color);
		System.out.println(d1.type);
		
		//1년이 지난후
		d1.age = d1.age+1;
		d1.color = "노란색";
		d1.name = "레르코";
		//d1.type = "푸들";
		System.out.println(d1.name);
		System.out.println(d1.age);
		System.out.println(d1.color);
		System.out.println(d1.type);
	}
}

생성자

package ch04;

//값을 초기화하지 않는 이유는 new 할때마다 다른 상태를 가진 고양이를 만들기 위해서이다.
public class Cat {
	String name;
	String color;
	
// Cat() 생성자를 디폴트 생성자라고 한다
// 디폴트 생성자는 적지 않아도 있는 것 (생략가능)
// 그러나 직접 생성자를 구현하게 되면 디폴트 생성자가 생략될 수없다.
//	public Cat() {
//		System.out.println("고양이 탄생함");
//	}
	
	//개발자가 직접 생성자 구현함=> 디폴트 생성자가 생기지 않음
	public Cat(String n,String c) {
		System.out.println("고양이가 탄생함");
		
		// String n , String c는 지역변수 = Cat() 이라는 생성자가 가진 지역변수 
		name = n;
		color = c;
	}
}
package ch04;

public class CatApp {
	public static void main(String[] args) {
		// new는 메모리에 할당 (heap) -> String name, String color
		// Cat() 생성자 호출 -> 상태를 초기화 하기위해서
		// c1 -> heap공간을 가리키는 주소
		// Cat : 커스텀 타입(내가 만든 타입)
		Cat c1 =  new Cat("집사1","하얀색");
		System.out.println(c1.name); // null 자체도 데이터이다. 값이 없음을 의미!!
		System.out.println(c1.color);
	}
}

생성자 (this)

package ch04;

public class People {
	String name;
	int age;
	
	//디폴트 생성자 있었음 .java -> .class 컴파일할때 자바가 자동으로 코드를 만들어줌
	
	//내가 직접 생성자를 정의하였기 때문에 디폴트 생성자는 없어짐
	public People(String name,int age) {
		System.out.println("메서드 스택 name : "+name);
		System.out.println("메서드 스택 age : "+age);
		
		//this라는 건 자기자신의 힙공간을 가르킴
		this.name = name;
		this.age = age;
	}
	
}
package ch04;

public class PeopleApp {
	public static void main(String[] args) {
		People p1 = new People("홍길동",25);
		
	}
}

profile
초보 개발자의 성장기💻

0개의 댓글