20/10/30

아라·2020년 10월 30일
0

국비교육

목록 보기
15/30

파일 1개당 클래스 1개 정의(권장사항). 목적이 같은 코드를 물리적으로 분리시켜 코드 관리가 효율적으로 이루어지도록 한다. 파일명만 봐도 어떤 클래스가 있는지 알아볼 수 있도록. 그리고 재사용도 편해진다.
반드시 클래스명과 파일명이 동일해야 한다. 동일하지 않으면 컴파일에러가 난다.
하나의 파일에는 하나의 public클래스가 있어야 한다. (대표클래스)(여러 클래스가 한 파일에 존재할 때 어느 클래스명이 파일명과 같아야 할지 모르기 때문에)

eclipse TODO

// TODO

위와 같이 주석을 달면 나중에 tasks에서 TODO만 확인할 수 있다.
FIXME는 중요태그이다.

값형과 참조형의 차이

값형과 참조형이 매개변수로 사용될 때의 상황에서
1. 값형(값을 복사해서 전달) : 사이드 이펙트 無
2. 참조형(주소값을 복사해서 전달) : 사이드 이펙트 有
참조형 타입이 매개변수로 전달될 때는 주소값이 복사

int weight=40;
String size="A4";
Calendar c=Calendar.getInstance();
		
Paper p1=new Paper();
		
p1.setWeight(weight);
p1.setSize(size);
p1.setCreationTime(c);
		
System.out.println(p1.getWeight());
System.out.println(p1.getSize());
System.out.printf("%tF\n", p1.getCreationTime());
		
weight=50;
c.add(Calendar.DATE, 7); // 시간을 일주일 뒤로.
		
System.out.println(p1.getWeight()); // 무게는 40으로 계속 유지된다.
System.out.println(p1.getSize());
System.out.printf("%tF\n", p1.getCreationTime()); // 하지만 시간은 일주일 뒤로 바뀐다.

배열을 매개변수로 할 때

setter측면에서

1. 배열변수만들어서 set
String[] parent= {"홍아빠", "김엄마"};
b1.setParent(parent);

2. 변수없이 set안에서 생성
b1.setParent(new String[]{"홍아빠", "김엄마"});

3. 배열요소들 입력받아서 setter안에서 설정
b1.setParent("홍아빠", "김엄마");
public void setParent(String father, String mother) {
	this.parent=new String[] {father, mother};
}

// 아래의 경우는 안됨!!!
b1.setParent({"홍아빠", "김엄마"});	

getter측면에서

아래와 같은 방법으로 get할 수 있다.

System.out.println(b1.getParent()[0]);
System.out.println(b1.getParent()[1]);

이 때는 부모 전체 다 가져올 때이고, 배열요소 중 일부를 가져오고 싶을 때는 아래와 같이 코드를 작성하면 된다.

1.  메서드 2public String getFather() {
	return this.parent[0];
}
public String getMother() {
	return this.parent[1];
}

2. 메서드 1, 인자로 구분.
// 숫자 이용하는 방법(그 숫자의 의미를 모르면 불편함)
public String getParent(int n) {
	if (n==1) {
		return this.parent[0];
	}else {
		return this.parent[1];
	}
}
// String 이용하는 방법(어떤 단어를 넣어야 결과가 나오는지 모름)
public String getParent(String n) {
	if (n.equals("아빠")) {
		return this.parent[0];
	}else {
		return this.parent[1];
	}
}

생성자(Constructor)

객체의 멤버를 초기화하는 목적을 가지고 있는 메서드. 사용법이 일반 메서드와는 상이함.
반환 타입이 없고 이름이 클래스명과 동일하다.(이름을 마음대로 정할 수 없다.)
객체 생성 직후 객체의 초기 상태를 설정.
호출은 생성할 때 1번만 가능!

// 기본 생성자
// - 개발자가 명시적으로 선언하지 않아도 컴파일러가 만들어주는 생성자
public Person() {
	this.name=null;
	this.age=0;
}

생성자 오버로딩

public Person(String name, int age) {
	this.name=name;
	this.age=age;
}

생성하면서 초기화시킬 값을 미리 인자로 받아서 생성과 동시에 초기화시킨다. 개발하는 개발자를 위해 객체를 생성하고 초기화하는 방법이 다양해졌다.

0개의 댓글