티스토리 뷰

학습정리-10-13.txt
0.00MB

1. 아래의 BankAccount(소스 PPT 참고) 에 대하여 메모리 그림을 그리시오.
BankAccount ref1 = new BankAccount();
BankAccount ref2 = ref1;

 

 

 


2.생성자란 무엇인가요?

클래스명과 같은 이름을 가진 메소드. void나 int처럼 리턴 타입이 없어 리턴값도 없으며, 입력만 있고 출력은 없는 함수로 초기화 작업만 한다.

 

1. 클래스 이름과 같은 함수 = 생성자

2. 만약 개발자가 생성자를 만들지 않으면 컴파일러가 만들어주는 생성자를 디폴트 생성자라고 함

3. 생성자 또한 함수 이지만 기존 함수와 조금 다르다.

→  다른 점은 리턴 타입(void, int,......)이 없으니까 당연히 리턴 값도 없다.

 4. 생성자는 멤버변수 초기화 할때 대부분 사용.

5. 개발자가 한개라도 생성자를 만들게 되면 디폴트 생성자(파라미터 값이 없는 함수)를 자동으로 만들어주지 않는다.

ex) public BankAccountP(){

 → 디폴트 생성자

 

 

 


3.디폴트 생성자에 대하여 설명하시오.

만약 개발자가 생성자를 만들지 않으면 컴파일러가 만들어주는 생성자를 디폴트 생성자라고 한다.

하지만 개발자가 한개라도 생성자를 만들게 되면 디폴트 생성자(파라미터 값이 없는 함수)를 만들지 않음.

ex)

public BankAccountP(){

 → 디폴트 생성자

 

 

 


4.생성자의 용도는?

멤버 변수(메소드 밖, 클래스 안에 위치한 변수)를 초기화 할때 사용한다.

 

 

 


5. null 에 대하여 설명하시오.

class BankAccount{
	int balance = 0; //예금 잔액
	
	public int deposit(int amount) {
		balance += amount;
		return balance;		
	}
	public int witdraw(int amount) {
		balance -= amount;
		return balance;
	}
	public int checkMayBalance() {
		System.out.println("잔액 : " + balance);
		return balance;
	}
}


public class BankAccount00 {
	
	public static void main(String[] args) {
				
		BankAccount yoon = new BankAccount();
		BankAccount park = new BankAccount();
        
        	yoon = null;
		
		yoon.deposit(5000);
		park.deposit(3000);
		
		yoon.witdraw(2000);
		park.witdraw(2000);
		
		yoon.checkMayBalance();
		park.checkMayBalance();
		
	}

}
yoon = null;

null을 사용하면 yoon에 저장되어 있는 주소를 없애버린다. 

(→ JVM에게 해당 메모리가 정리 대상임을 알려주는 것)

 

 

 


6.아래의 TV 클래스를 만드시오.
public static void main(String[] args) {
TV myTV = new TV("LG", 2017, 32); //LG에서 만든 2017년 32인치
myTV.show();
}
//출력
LG에서 만든 2017년형 32인치 TV

class TV{
	String brand;
	int year;
	int inch;
	
	TV(String brand, int year, int inch) {
		this.brand = brand;
		this.year = year;
		this.inch = inch;
	}
	public void show() {
		System.out.println(brand + "에서 만든 " + year + "년형 " + inch + "인치 TV");
	}
	
}


public class Prac {

	public static void main(String[] args) {
		//생성자는 멤버 변수 초기화
		TV myTV = new TV("LG", 2017, 32);
		
		myTV.show();
		
		
		TV yourTV = new TV("삼성", 2021, 78);
		
		yourTV.show();

	}

}

 

 

 

 

 

 


7. 아래의 Grade 를 만드시오.
public static void main(String[] args) {

int math, science, english;
math = 90;
science = 80; 
english = 80;

Grade me = new Grade(math, science, english);
System.out.println("평균은 " + me.average());
System.out.println(me.getGrade()); //우 입니다.

class Grade{
	int math, science, english;
	double avg;
	
	public Grade(int math, int science, int english) {
		this.math = math;
		this.science = science;
		this.english = english;
	}
	
	public double average() {
		return avg = (math + science + english) / 3.0;
	}
	
	public String getGrade() {
		double avg = average();
		
		if(avg >= 90) {
			return "수 입니다.";
		}
		else if(avg >= 80) {
			return "우 입니다.";
		}
		else if(avg >= 70) {
			return "미 입니다.";
		}
		else if(avg >= 60) {
			return "양 입니다.";
		}
		else{
			return "가 입니다.";
		}
	}
	
}

public class TimeTest {

	public static void main(String[] args) {
		 int math, science, english;
         math = 90;
         science = 80; 
         english = 80;

         Grade me = new Grade(math, science, english);
         System.out.println("평균은 " + me.average());
         System.out.println(me.getGrade()); //우 입니다.
	}

}

 

 

 

 


8.노래 한 곡을 나타내는 Song 클래스를 작성하라. Song은 다음 필드로 구성된다.
- 노래의 제목을 나타내는 title
- 가수를 나타내는 artist
- 노래가 발표된 연도를 나타내는 year
- 국적을 나타내는 country

또한 Song 클래스에 다음 생성자와 메소드를 작성하라.

- 생성자 2개: 기본 생성자와 매개변수로 모든 필드를 초기화하는 생성자
- 노래 정보를 출력하는 show() 메소드
- main() 메소드에서는 Song 객체로 생성하고 
show()를 이용하여 노래의 정보를 다음과 같이 출력하라.

출력:
1978년, 스웨덴 국적의 ABBA가 부른 "Dancing Queen"

class Song{
	String title, artist, country;
	int year;
	
	Song(){
		
	}
	
	Song(String title, String artist, int year, String country){
		this.title = title;
		this.artist = artist;
		this.year = year;
		this.country = country;
	}
	public void show() {
		System.out.println(year + "년, " + country + " 국적의 " + artist + "가 부른 " + '\"' + title +'\"');
	}
	
	
}

public class Prac3 {

	public static void main(String[] args) {
		
		Song song = new Song("Dancing Queen", "ABBA", 1978, "스웨덴");
		
		song.show();

	}

}

기본 생성자 == 디폴트 생성자

위 코드는 기본 생성자가 없어도 돌아가지만 문제에는 생성하라고 써 있기 때문에 넣어야한다.

또한 혹시나 Song song = new Song();을 사용할 때 오류가 나는 것을 방지하고 위해서 기본 생성자를 만들어준다. 

 

멤버 변수 : 함수 밖, 클래스 안 변수

ex)

String title;
String artist;
int year;
String country;

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 29 30 31
글 보관함