πŸ‘©β€πŸŽ“κ³΅λΆ€-μžλ°” 클래슀

유령개·2021λ…„ 11μ›” 21일
0

μžλ°”

λͺ©λ‘ 보기
1/4
post-custom-banner

이 μ‹œλ¦¬μ¦ˆμ—μ„œλŠ” μžλ°” 곡뢀 ν–ˆλ˜ 것을 μœ„μ£Όλ‘œ μž‘μ„±ν•  것이닀.
ν•™κ΅μ—μ„œ μžλ°” ν”„λ‘œκ·Έλž˜λ°2λΆ€ν„° μ œλŒ€λ‘œ 된 μžλ°” ꡬ쑰λ₯Ό κ³΅λΆ€ν–ˆκΈ°μ— κ·Έ μœ„μ£Όλ‘œ μž‘μ„±ν•  것 κ°™λ‹€.
참고둜 μ½”λ“œμ—λŠ” λ‹Ήμ‹œ 곡뢀할 λ•Œ κΈ°μˆ ν–ˆλ˜ μ½”λ“œκΈ° λ•Œλ¬Έμ— 였λ₯˜κ°€ μžˆμ„ 수 μžˆλ‹€.


클래슀

κ°œλ… 확인 ν•™μŠ΅

1. ν΄λž˜μŠ€λž€ λ¬΄μ—‡μΈκ°€μš”?

μžλ°”μ˜ 섀계도‒ 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ ν•„λ“œ, μƒμ„±μž, λ©”μ†Œλ“œ μ •μ˜

2. κ°μ²΄λž€ λ¬΄μ—‡μΈκ°€μš”?

μ–΄λ– ν•œ 속성값과 행동을 가지고 μžˆλŠ” 데이터

3. μΈμŠ€ν„΄μŠ€λž€ λ¬΄μ—‡μΈκ°€μš”?

ν΄λž˜μŠ€λ‘œλΆ€ν„° λ§Œλ“€μ–΄μ§„ 객체

4. 클래슀 λ©€λ²„μ—λŠ” μ–΄λ–€ 것듀이 μžˆλ‚˜μš”?

ν•„λ“œ/μƒμ„±μž/λ©”μ†Œλ“œ λ“±

5. ν•„λ“œλž€ λ¬΄μ—‡μΈκ°€μš”?

객체의 고유 데이터, 객체가 κ°€μ Έμ•Ό ν•  λΆ€ν’ˆ κ°’ λ˜λŠ” 객체
객체의 ν˜„μž¬ μƒνƒœ 데이터λ₯Ό μ €μž₯

6. μƒμ„±μžλž€ λ¬΄μ—‡μΈκ°€μš”?

μƒˆλ‘œμš΄ μ—°μ‚°μžμ— μ˜ν•΄ ν˜ΈμΆœλ˜μ–΄ 객체의 μ΄ˆκΈ°ν™”λ₯Ό λ‹΄λ‹Ή

7. μƒμ„±μž μ˜€λ²„λ‘œλ”©μ΄λž€ λ¬΄μ—‡μΈκ°€μš”?

λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…,개수,μˆœμ„œκ°€ λ‹€λ₯Έ μƒμ„±μžλ₯Ό μ—¬λŸ¬ 개 μ„ μ–Έ

8. λ©”μ†Œλ“œλž€ λ¬΄μ—‡μΈκ°€μš”?

객체의 λ™μž‘

9. λ©”μ†Œλ“œ μ˜€λ²„λ‘œλ”©μ΄λž€ λ¬΄μ—‡μΈκ°€μš”?

클래슀 내에 같은 μ΄λ¦„μ˜ λ©”μ†Œλ“œλ₯Ό μ—¬λŸ¬ 개 μ„ μ–Έν•˜λŠ”κ²ƒ

10. this.은 μ–Έμ œ μ‚¬μš©ν•˜λ‚˜μš”?

ν•„λ“œμ™€ λ§€κ°œλ³€μˆ˜ 이름이 μ™„μ „νžˆ 동일할 경우

11. this()λŠ” μ–Έμ œ μ‚¬μš©ν•˜λ‚˜μš”?

λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜μ—¬ ν•„λ“œμ˜ μ΄ˆκΈ°ν™” λ‚΄μš©μ„ ν•œ μƒμ„±μžμ—λ§Œ μ§‘μ€‘ν•΄μ„œ μž‘μ„±ν•  경우

12. voidλŠ” μ–Έμ œ μ‚¬μš©ν•˜λ‚˜μš”?

리턴이 μ—†λŠ” μžλ£Œν˜•μ΄ ν•„μš”ν• λ•Œ

13. static은 μ–Έμ œ μ‚¬μš©ν•˜λ‚˜μš”?

ν΄λž˜μŠ€μ— κ³ μ •λœ λ©€λ²„λ‘œμ„œ 객체λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³  μ‚¬μš©ν•  수 μžˆλŠ” ν•„λ“œμ™€ λ©”μ†Œλ“œκ°€ ν•„μš”ν• λ•Œ

14. μ‹±κΈ€ν†€μ΄λž€ λ¬΄μ—‡μΈκ°€μš”?

전체 ν”„λ‘œκ·Έλž¨μ—μ„œ 단 ν•˜λ‚˜μ˜ 객체만 λ§Œλ“€λ„λ‘ 보μž₯ν•˜λŠ” μ½”λ”© 기법

15. finalμ΄λž€ λ¬΄μ—‡μΈκ°€μš”?

μ΅œμ’…μ μΈ 값을 가지고 μžˆλŠ” ν•„λ“œλ‘œμ¨ 값을 λ³€κ²½ν•  수 μ—†μŒ

16. μƒμˆ˜λŠ” λ¬΄μ—‡μΈκ°€μš”?

λ³€ν•˜μ§€ μ•ŠλŠ” μΌμ •ν•œ κ°’μ΄λ‚˜ 수

17. μƒμˆ˜λŠ” μ–΄λ–»κ²Œ λ§Œλ“œλ‚˜μš”?

Final λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ³€μˆ˜λ₯Ό λ§Œλ“€λ©΄ 됨

18. μ ‘κ·Ό μ œν•œμžκ°€ λͺ…μ‹œμ μœΌλ‘œ μ“°μ—¬ μžˆμ§€ μ•Šμ€ 경우 μ ‘κ·Ό λ²”μœ„λŠ” μ–΄λ–»κ²Œ λ˜λ‚˜μš”?

기본적으둜 default μ ‘κ·Ό μ œν•œ λ²”μœ„λ‘œ 섀정됨

μ‘μš© ν”„λ‘œκ·Έλž˜λ°

1. λ‹€μŒ ν”„λ‘œκ·Έλž¨μ€ 정상적인가? 가비지 컬렉터 μ˜ν•΄ μ‚¬λΌμ§€κ²Œ λ˜λŠ” 객체가 μ‘΄μž¬ν•˜λŠ”κ°€?

class MyClass {
}
class Test
{
	MyClass doSomething()
	{
		MyClass b = new MyClass(); //6번째 쀄
		return b;
	}
public static void main (String args[])
	{
	Test t = new Test();
	MyClass newObj = t.doSomething(); 
	newObj = new MyClass(); //13번째 쀄
	}
}

λ‹΅) B객체가 사라진닀

2.λ‹€μŒ ν”„λ‘œκ·Έλž¨μ—μ„œ 잘λͺ»λœ 뢀뢄은 무엇인가? μ˜¬λ°”λ₯΄κ²Œ μˆ˜μ •ν•˜μ‹œμ˜€

class Rectangle
{
	int width, height;
	int area() { return width*height; }
}

public class Test {

	public static void main(String[] args)
	{
		Rectangle myRect; 
		myRect.width = 10;
		myRect.height = 20;
		System.out.println("면적은 " + myRect.area());
	}
}

λ‹΅) Rectangle myRect; 같이 객체선언 ν•˜λ©΄ μ•ˆλ˜κ³  Rectangle myRect = new Rectangle();
처럼 λ°”κΏ”μ£Όλ©΄ 잘 μ‹€ν–‰λœλ‹€.

3. λ‹€μŒκ³Ό 같이 ν΄λž˜μŠ€κ°€ μ •μ˜λ˜μ–΄ μžˆλ‹€κ³  κ°€μ •ν•˜μž. 이 클래슀의 객체λ₯Ό μƒμ„±ν•˜κ³  ν•„λ“œλ₯Ό 10κ³Ό 1.2345둜 μ΄ˆκΈ°ν™”ν•˜λ©° 각 ν•„λ“œμ˜ 값을 좜λ ₯ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜λΌ.

public class NumberBox { 
	public int ivalue;
	public float fvalue;
}

λ‹΅)

public class NumberBox {
	public int ivalue;
	public float fvalue;
NumberBox(){
	ivalue = 10;
	fvalue = (float) 1.2345;
}
public static void main(String args[])
	{
		NumberBox a = new NumberBox();
		System.out.println(a.ivalue);
		System.out.print(a.fvalue);
	}
}

4. μ‚¬κ°ν˜•μ„ λ‚˜νƒ€λ‚΄λŠ” 클래슀 Rectangle을 λ§Œλ“€μ–΄λ³΄μž. μ‚¬κ°ν˜•μ€ κ°€λ‘œ(w)와 μ„Έλ‘œ(h)λ₯Ό 가지며, μ‚¬κ°ν˜•μ˜ 넓이λ₯Ό λ°˜ν™˜ν•˜λŠ” area(), μ‚¬κ°ν˜•μ˜ λ‘˜λ ˆλ₯Ό λ°˜ν™˜ν•˜λŠ” perimeter() λ©”μ†Œλ“œλ₯Ό 가진닀. Rectangle 클래슀λ₯Ό μž‘μ„±ν•˜κ³  객체λ₯Ό μƒμ„±ν•˜μ—¬ ν…ŒμŠ€νŠΈν•˜λΌ.

λ‹΅)

public class Rectangle
{
	int w;
	int h;
public int area(int w, int h) 
{
	return w*h;
}
public int perimeter(int w, int h)
{
	return 2*w + 2*h;
}
public static void main(String args[])
	{
		Rectangle rec = new Rectangle();
		System.out.println(rec.area(10,3));
		System.out.println(rec.perimeter(10,3));
	}
}

5. 학생을 λ‚˜νƒ€λ‚΄λŠ” 클래슀 Studentλ₯Ό λ§Œλ“€μ–΄λ³΄μž. 학생은 이름(private name)κ³Ό ν•™λ²ˆ(private rollno)을 가진닀. μ΄λ¦„ν•™λ²ˆ(홍길동_202020)λ₯Ό 좜λ ₯ν•˜λŠ” λ©”μ†Œλ“œ toString()λ₯Ό 가진닀. 이름을 μ „λ‹¬ν•˜λŠ” μƒμ„±μžλ„ ν•„μš”ν•˜λ‹€. ν•™λ²ˆμ„ 전달해 μ„ΈνŒ…ν•˜λŠ” λ©”μ†Œλ“œλ„ ν•„μš”ν•˜λ‹€. Test 클래슀λ₯Ό μž‘μ„±ν•˜κ³  이름 μ—†λŠ” 객체 생성(ν•™λ²ˆμ€ 객체 생성 ν›„ μ„ΈνŒ…), 이름을 μ „λ‹¬ν•œ 객체λ₯Ό μƒμ„±ν•˜μ—¬ λ©”μ†Œλ“œ toString() 호좜의 κ²°κ³Όλ₯Ό 좜λ ₯ν•˜λΌ.

λ‹΅)

public class StudentTest {
	public static void main(String[] args) {
	Student sa = new Student();
	Student sb = new Student("홍길동");
	System.out.println(sa);
	System.out.println(sb);
	sb.setRollno("202101010");
	System.out.println(sb);
	}
}
public class Student {
	private String name;
	private String rollno;
Student()
{
this("None");
}
Student(String n)
{
	this.name = n;
}
void setRollno(String r)
{
	this.rollno = r;
}
public String toString()
	{
		String str = "";
		str += name;
		str += "_";
		str += rollno;
		return str;
	}
}

6. λ‚ μ§œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 클래슀 Dateλ₯Ό λ§Œλ“€μ–΄λ³΄μž. DateλŠ” 연도, μ›”, 일 λ“±μ˜ 속성을 가지며, λ‚ μ§œλ₯Ό β€œ2012.7.12”과 같이 좜λ ₯ν•˜λŠ” λ©”μ†Œλ“œ print1(), λ‚ μ§œλ₯Ό β€œJuly 12, 2012”와 같이 좜λ ₯ν•˜λŠ” print2() λ“±μ˜ λ©”μ†Œλ“œλ₯Ό 가진닀. Date 클래슀λ₯Ό μž‘μ„±ν•˜κ³  객체λ₯Ό μƒμ„±ν•˜μ—¬μ„œ ν…ŒμŠ€νŠΈν•˜λΌ.

λ‹΅)

class Date{
int year;
int month;
int day;
void print1()
{
	System.out.println(year+"."+month+"."+day);
}
void print2(){
String s = "";
switch(month){
case 1 : s = "Jan"; break;
case 2 : s = "Feb"; break;
case 3 : s = "Mar"; break;
case 4 : s = "Apil"; break;
case 5 : s = "May"; break;
case 6 : s = "Jun"; break;
case 7 : s = "July"; break;
case 8 : s = "Aug"; break;
case 9 : s = "Sep"; break;
case 10 : s = "Oct"; break;
case 11 : s = "Nob"; break;
case 12 : s = "Dec"; break;
default : s = "ERROR"; break;
}
	System.out.println(s + " "+day+", "+year);
	}
}
public class DateTest {
	public static void main(String[] args) {
	Date d = new Date();
	d.year = 2012;
	d.month = 7;
	d.day = 5;
	d.print1();
	d.print2();
	}
}

7. μ˜ν™” Movie 클래슀λ₯Ό μ •μ˜ν•˜μ—¬ 보자. Movie ν΄λž˜μŠ€λŠ” μ˜ν™” 제λͺ©, 평점, 감독, λ°œν‘œλœ 연도 λ“± 의 ν•„λ“œλ₯Ό 가진닀. μ˜ν™”μ˜ λͺ¨λ“  정보λ₯Ό 화면에 좜λ ₯ν•˜λŠ” print()λΌλŠ” λ©”μ†Œλ“œλ₯Ό κ΅¬ν˜„ν•˜λΌ. Movie 클래슀λ₯Ό μž‘μ„±ν•˜κ³  객체λ₯Ό μƒμ„±ν•˜μ—¬μ„œ ν…ŒμŠ€νŠΈν•˜λΌ.

λ‹΅)

class Movie{
	int year;
	String	title;
	String	pd;
	double	score;
void print(){
	System.out.println(year	+ ", "+title+",	"+pd+",	5.0/"+score);
	}
}
public class MovieTest	{
	public static void main(String[] args)	{
		Movie m	= new Movie();
		m.year = 2012;
		m.title	= "Total Recall";
		m.pd = "m.b";
		m.score = 4.5;
	m.print();
	}
}

뒀에 μ½”λ“œκ°€ 더 μžˆμ§€λ§Œ 적기에 적절치 μ•Šμ•„ μ—¬κΈ°κΉŒμ§€λ§Œ 적어두겠닀.

ν΄λž˜μŠ€λΌλŠ” κ°œλ…μ€ 타 언어와 차이가 컀 μ‹ κΈ°ν–ˆλ˜ 기얡이 λ‚œλ‹€.

ν–₯후에 κΈ°μž¬ν•  μƒμ„±μž,상속,μΈν„°νŽ˜μ΄μŠ€ λ“± λŒ€λΆ€λΆ„ μžλ°”μ˜ 이점듀은 ν΄λž˜μŠ€λ‘œλΆ€ν„° λΉ„λ‘―λ˜λŠ” κ±Έ μ•Œμˆ˜ μžˆμ—ˆλ‹€.

profile
ν•œλ¦ΌλŒ€ν•™κ΅ μ •λ³΄κ³Όν•™λŒ€ 2ν•™λ…„ μž¬ν•™μ€‘ / 윑ꡰ μ •λ³΄λ³΄ν˜Έλ³‘ 22-2κΈ°
post-custom-banner

0개의 λŒ“κΈ€