프로그래밍/자바(java) 융합개발자 2차

[자바 3일차 2] 22일차 2 - 클래스, 객체

aSpring 2021. 1. 14. 16:19
728x90
728x90

2021/01/14 - [공부/자바(java) 융합개발자 2차(복습)] - [자바 기초] 22일차 - 배열, 난수\

 

자바

객체지향 <-> 절차적

재사용성

 

클래스, 객체 용어 알기

 

클래스 : 추상적, 일반적

객체 : 구체적

 

ex) 붕어빵 틀 -> 똑같은 모양의 붕어빵을 만들기 위함

    클래스                              객체

 

설계도 -> 아파트 지음

클래스     객체

 

객체 : 추상적인 클래스로 만들어진 구체적인 것

 

사람의 특징을 담아 만든 '나'

클래스                        객체

 

클래스     객체

붕어빵틀   붕어빵

설계도      아파트

앵무새      로니, 망고, 태양이..

 

클래스를 먼저 정의해 주어야 한다

 

프로그램으로 클래스를 정의할 때

->    속성       +    행위      정의

-> 멤버변수 + 메소드(함수)

 

<Baby 라는 클래스 만들기>

보통 클래스 제목 첫 글자는 대문자로 함

 

속성 + 행위

 

package com.day03;

public class Baby {


		String name; //이름
		int age; //나이
		
		//웃는다
		public void smile() {
			System.out.println("웃는다");
		}
		
		//운다
		public void cry() {
			System.out.println("운다");
		}

}

여기까지가 Baby 클래스. 그러나 실행할 수 없으므로 실행이 가능하도록 객체를 만들어 준다.

 

public static void main(String[] args) {
			Baby b1 = new Baby();
		}

b1 이라는 객체가 생겼다.

package com.day03;

public class Baby {


		String name; //이름
		int age; //나이
		
		//웃는다
		public void smile() {
			System.out.println("웃는다");
		}
		
		//운다
		public void cry() {
			System.out.println("운다");
		}
		// 여기까지가 Baby 클래스. 그러나 실행할 수 없으므로 객체를 만든다
		
		public static void main(String[] args) {
			Baby b1 = new Baby();
		}

}

 

b1이 운다.

b1.cry();
package com.day03;

public class Baby {


		String name; //이름
		int age; //나이
		
		//웃는다
		public void smile() {
			System.out.println("웃는다");
		}
		
		//운다
		public void cry() {
			System.out.println("운다");
		}
		// 여기까지가 Baby 클래스. 그러나 실행할 수 없으므로 객체를 만든다
		
		public static void main(String[] args) {
			Baby b1 = new Baby();
			b1.cry();
		}

}

실행 :  운다

 

b1.smile();

실행 : 웃는다

 

클래스를 만들고 -> 이를 실행하기 위한 객체 생성 -> 실행시킴

 

b1.name="홍길동";
System.out.println(b1.name);

홍길동

 

package com.day03;

public class Baby {


		String name; //이름
		int age; //나이
		
		//웃는다
		public void smile() {
			System.out.println("웃는다");
		}
		
		//운다
		public void cry() {
			System.out.println("운다");
		}
		
		public void info() {
			System.out.println("이름:" + name);
			System.out.println("나이:" + age);
		}
		
		
		// 여기까지가 Baby 클래스. 그러나 실행할 수 없으므로 객체를 만든다
		
		
		public static void main(String[] args) {
			Baby b1 = new Baby();
			b1.cry();
			b1.smile();
			b1.name="홍길동";
			System.out.println(b1.name);
			b1.age=10;
			b1.info();
		}

}

운다
웃는다
홍길동
이름:홍길동
나이:10

 

package com.day03;

public class Baby {


		String name; //이름
		int age; //나이
		
		//웃는다
		public void smile() {
			System.out.println("웃는다");
		}
		
		//운다
		public void cry() {
			System.out.println("운다");
		}
		
		public void info() {
			System.out.println("이름:" + name);
			System.out.println("나이:" + age);
		}
		
		
		// 여기까지가 Baby 클래스. 그러나 실행할 수 없으므로 객체를 만든다
		
		
		public static void main(String[] args) {
			Baby b1 = new Baby();
			b1.cry();
			b1.smile();
			b1.name="홍길동";
			System.out.println(b1.name);
			b1.age=10;
			b1.info();
			
			Baby b2 = new Baby();
			b2.name="이순신";
			b2.age=5;
			b2.info();
		}

}

운다
웃는다
홍길동
이름:홍길동
나이:10
이름:이순신
나이:5

 

하나의 객체를 만들면 그에 해당하는 클래스를 모두 쓸 수 있다.

 

Person.java

이름 name, 주소 addr를 가지고 공부하다 study() 라는 행위를 하는 Person 클래스를 작성하시오.

package com.day03;

public class Person {

	String name;
	String addr;
	
	public void study() {
	}
}

이것만 가지고는 실행이 불가능하다. 따라서

package com.day03;

public class Person {

	String name;
	String addr;
	
	public void study() {
		System.out.println(name + "공부하다");
	}
}

 

MainTest.java 에 main 만들고 Person 만들어주기

package com.day03;

public class MainTest {
	public static void main(String[] args) {
		Person p = new Person();
		p.name = "강감찬";
		p.study();
		p.addr="부산";
		System.out.println(p.addr);
		
		Baby b = new Baby();
		b.smile();
	}
}

강감찬 공부하다
부산
웃는다

 

객체는 어디에나 만들어 주어도 상관 없다.

꼭 그 클래스 안에 있어야만 하는 것이 아니다.

 

Bank를 만들어보자. 계좌 이름, 계좌 번호만 있고 입급하다, 출근하다, 잔액확인하다를 할 수 있다.

Bank.java

package com.day03;

public class Bank {
	String name; //계좌 이름
	int money;   //계좌 잔액
	
	//입금하다
	public void inputMoney() {
	
	}
	
	//출금하다
	public void outMoney()  {
		
	}
	
	//잔액확인
	public void getMoney() {
		
	}
}
package com.day03;

public class Bank {
	String name; //계좌 이름
	int money;   //계좌 잔액
	
	//입금하다
	public void inputMoney() {
	
	}
	
	//출금하다
	public void outMoney()  {
		
	}
	
	//잔액확인
	public void getMoney() {
		System.out.println(name + "님 잔액 : " + money);
	}
	
	public static void main(String[] args) {
		Bank b1 = new Bank();
		b1.name = "홍길동";//홍길동이라는 사람이 은행 업무를 볼 것
		//입금하다
		b1.inputMoney(5000); //5000원을 입금한다
		
	}
	
}

inputMoney(); 아무것도 안 받는데

b1.inputMoney(5000); 이라고 하니까 이런 행위를 찾을 수 없어서 에러가 남

 

package com.day03;

public class Bank {
	String name; //계좌 이름
	int money;   //계좌 잔액 -> 전역변수, 멤버 변수
	
	//입금하다
	public void inputMoney(int don) { // 입금할 수 있게 int don이라는 매개 변수 만들어줌 -> 지역변수임
		money += don; //잔액 money에 입금한 금액 don을 더함 -> 입금이라는 행위
	}
	
	//출금하다
	public void outMoney()  {
		
	}
	
	//잔액확인
	public void getMoney() {
		System.out.println(name + "님 잔액 : " + money);
	}
	
	public static void main(String[] args) {
		Bank b1 = new Bank();
		b1.name = "홍길동";//홍길동이라는 사람이 은행 업무를 볼 것
		//입금하다
		b1.inputMoney(5000); //5000원을 입금한다
		
	}
	
}
package com.day03;

public class Bank {
	String name; //계좌 이름
	int money;   //계좌 잔액 -> 전역변수, 멤버 변수
	
	//입금하다
	public void inputMoney(int don) { // 입금할 수 있게 int don이라는 매개 변수 만들어줌 -> 지역변수임
		money += don; //잔액 money에 입금한 금액 don을 더함 -> 입금이라는 행위
	}
	
	//출금하다
	public void outMoney()  {
		
	}
	
	//잔액확인
	public void getMoney() {
		System.out.println(name + "님 잔액 : " + money);
	}
	
	public static void main(String[] args) {
		Bank b1 = new Bank();
		b1.name = "홍길동";//홍길동이라는 사람이 은행 업무를 볼 것
		//입금하다
		b1.inputMoney(5000); //5000원을 입금한다
		b1.getMoney();
	}
	
}

홍길동님 잔액 : 5000

 

출금하는 기능도 만들어 주기

package com.day03;

public class Bank {
	String name; //계좌 이름
	int money;   //계좌 잔액 -> 전역변수, 멤버 변수
	
	//입금하다
	public void inputMoney(int don) { // 입금할 수 있게 int don이라는 매개 변수 만들어줌 -> 지역변수임
		money += don; //잔액 money에 입금한 금액 don을 더함 -> 입금이라는 행위
	}
	
	//출금하다
	public void outMoney(int don)  {
		money -= don;
	}
	
	//잔액확인
	public void getMoney() {
		System.out.println(name + "님 잔액 : " + money);
	}
	
	public static void main(String[] args) {
		Bank b1 = new Bank();
		b1.name = "홍길동";//홍길동이라는 사람이 은행 업무를 볼 것
		//입금하다
		b1.inputMoney(5000); //5000원을 입금한다
		b1.getMoney();
		//출금하다
		b1.outMoney(7000);
		b1.getMoney();
	}
	
}

홍길동님 잔액 : 5000
홍길동님 잔액 : -2000

 

!! 마이너스 통장이 아님. 있는 돈만큼만 출금 가능하게 하고

-가 되면 잔액이 부족합니다. 라고 뜨게 하기.

package com.day03;

public class Bank {
	String name; //계좌 이름
	int money;   //계좌 잔액 -> 전역변수, 멤버 변수
	
	//입금하다
	public void inputMoney(int don) { // 입금할 수 있게 int don이라는 매개 변수 만들어줌 -> 지역변수임
		money += don; //잔액 money에 입금한 금액 don을 더함 -> 입금이라는 행위
	}
	
	//출금하다 잔액 부족
	public void outMoney(int don)  {
		
		if(money >= don) {
			money -= don;
		} else {
			System.out.println("잔액이 부족합니다");
		}
	}
	
	//잔액확인
	public void getMoney() {
		System.out.println(name + "님 잔액 : " + money);
	}
	
	public static void main(String[] args) {
		Bank b1 = new Bank();
		b1.name = "홍길동";//홍길동이라는 사람이 은행 업무를 볼 것
		//입금하다
		b1.inputMoney(5000); //5000원을 입금한다
		b1.getMoney();
		//출금하다
		b1.outMoney(7000);
		b1.getMoney();
	}
	
}

홍길동님 잔액 : 5000
잔액이 부족합니다
홍길동님 잔액 : 5000

 

don은 매개 변수 : 지역변수이므로 -> money로 통일해주는게 나음

package com.day03;

public class Bank {
	String name; //계좌 이름
	int money;   //계좌 잔액 -> 전역변수, 멤버 변수
	
	//입금하다
	public void inputMoney(int money) { // 입금할 수 있게 int don이라는 매개 변수 만들어줌 -> 지역변수임
		money += money; //5번 money = 6번 money
	}
	
	//출금하다 잔액 부족
	public void outMoney(int money)  {
		
		if(money >= money) { //5번 money >= 9번 money
			money -= money;
		} else {
			System.out.println("잔액이 부족합니다");
		}
	}
	
	//잔액확인
	public void getMoney() {
		System.out.println(name + "님 잔액 : " + money);
	}
	
	public static void main(String[] args) {
		Bank b1 = new Bank();
		b1.name = "홍길동";//홍길동이라는 사람이 은행 업무를 볼 것
		//입금하다
		b1.inputMoney(5000); //5000원을 입금한다
		b1.getMoney();
		//출금하다
		b1.outMoney(7000);
		b1.getMoney();
	}
	
}

홍길동님 잔액 : 0
홍길동님 잔액 : 0

 

Bank 자기 자신의 Money 앞에는 this.를 붙여주면 구분할 수 있게 된다.

this.는 자기 자신을 가르키는 객체

package com.day03;

public class Bank {
	String name; //계좌 이름
	int money;   //계좌 잔액 -> 전역변수, 멤버 변수
	
	//입금하다
	public void inputMoney(int money) { // 입금할 수 있게 int don이라는 매개 변수 만들어줌 -> 지역변수임
		this.money += money; //5번 money = 6번 money
	}
	
	//출금하다 잔액 부족
	public void outMoney(int money)  {
		
		if(this.money >= money) { //5번 money >= 9번 money
			this.money -= money;
		} else {
			System.out.println("잔액이 부족합니다.");
		}
	}
	
	//잔액확인
	public void getMoney() {
		System.out.println(name + "님 잔액 : " + money);
	}
	
	public static void main(String[] args) {
		Bank b1 = new Bank();
		b1.name = "홍길동";//홍길동이라는 사람이 은행 업무를 볼 것
		//입금하다
		b1.inputMoney(5000); //5000원을 입금한다
		b1.getMoney();
		//출금하다
		b1.outMoney(7000);
		b1.getMoney();
	}
	
}

 

이순신 고객이 만원을 입금한다.

package com.day03;

public class Bank {
	String name; //계좌 이름
	int money;   //계좌 잔액 -> 전역변수, 멤버 변수
	
	//입금하다
	public void inputMoney(int money) { // 입금할 수 있게 int don이라는 매개 변수 만들어줌 -> 지역변수임
		this.money += money; //5번 money = 6번 money
	}
	
	//출금하다 잔액 부족
	public void outMoney(int money)  {
		
		if(this.money >= money) { //5번 money >= 9번 money
			this.money -= money;
		} else {
			System.out.println("잔액이 부족합니다.");
		}
	}
	
	//잔액확인
	public void getMoney() {
		System.out.println(name + "님 잔액 : " + money);
	}
	
	public static void main(String[] args) {
		Bank b1 = new Bank();
		b1.name = "홍길동";//홍길동이라는 사람이 은행 업무를 볼 것
		//입금하다
		b1.inputMoney(5000); //5000원을 입금한다
		b1.getMoney();
		//출금하다
		b1.outMoney(7000);
		b1.getMoney();
		//이순신 고객이 만원을 입금
		Bank b2 = new Bank();
		b2.name ="이순신";
		b2.inputMoney(10000);
		b2.getMoney();
	}
	
}

홍길동님 잔액 : 5000
잔액이 부족합니다.
홍길동님 잔액 : 5000
이순신님 잔액 : 10000

 

Sachick. 사칙이라는 클래스 만들기 -> 사칙연산

package com.day03;

public class Sachick {

	//덧셈
	public void add() {
		
	}
	
	//뺄셈
	public void sub() {
		
	}
	
	//곱셈
	public void mul() {
		
	}
	
	//나눗셈
	public void div() {
		
	}
	
	
	public static void main(String[] args) {
		

	}

}
package com.day03;

public class Sachick {
	
	
	//덧셈
	public void add(int a, int b) {
		System.out.println( a + " + " + b + " = " + (a+b));
	}
	
	//뺄셈
	public void sub(int a, int b) {
		System.out.println( a + " - " + b + " = " + (a-b));
	}
	
	//곱셈
	public void mul(int a, int b) {
		System.out.println( a + " * " + b + " = " + a*b);
	}
	
	//나눗셈
	public void div(int a, int b) {
		System.out.println( a + " / " + b + " = " + a/b);
	}
	
	
	public static void main(String[] args) {
		Sachick s1 = new Sachick();
		// 5 3 더하기
		s1.add(5, 3);
		s1.sub(20, 10);
		s1.mul(3, 4);
		s1.div(9, 3);
	}
}

5 + 3 = 8 
20 - 10 = 10

3 * 4 = 12
9 / 3 = 3

 

package com.day03;

public class Sachick {
	
	
	//덧셈
	public void add(int a, int b) {
		System.out.println( a + " + " + b + " = " + (a+b));
	}
	
	//뺄셈
	public void sub(int a, int b) {
		System.out.println( a + " - " + b + " = " + (a-b));
	}
	
	//곱셈
	public void mul(int a, int b, int c) {
		System.out.println( a + " * " + b + " * " + c + " = " + a*b*c);
	}
	
	//나눗셈
	public void div(int a, int b) {
		System.out.println( a + " / " + b + " = " + a/b);
	}
	
	
	public static void main(String[] args) {
		Sachick s1 = new Sachick();
		// 5 3 더하기
		s1.add(5, 3);
		s1.sub(20, 10);
		s1.mul(2, 3, 4);
		s1.div(9, 3);
	}
}

5 + 3 = 8
20 - 10 = 10
2 * 3*4 = 24
9 / 3 = 3

 

나눗셈의 결과를 main에서 찍고 싶다?

나눗셈의 결과는 

public void div(int a, int b) {
		System.out.println( a + " / " + b + " = " + a/b);
	}

얘가 알고 있다.

-> 쟤한테 값을 전달 받아서 출력해야 한다. -> return 사용

public void div(int a, int b) {
		System.out.println( a + " / " + b + " = " + a/b);
		return a/b;
	}

그러나 에러가 남 -> void의 의미 : return값이 없다는 의미인데 return을 넣어주었으니 에러

return값에 들어가는 유형이 무엇인가? int형 -> void 대신 int를 적어준다.

public int div(int a, int b) {
		System.out.println( a + " / " + b + " = " + a/b);
		return a/b;
	}

에러가 나지 않는다.

public static void main(String[] args) {
		Sachick s1 = new Sachick();
		// s1.div(9, 3);
		System.out.println("나눗셈 결과 : " + s1.div(100, 20));
		int result = s1.div(100, 20);
		System.out.println(result);
	}

나눗셈 결과 : 5
5

 

public static void main(String[] args)

main은 return값은 없고(void) 문자형의 배열(String[])을 가진다.

 

다시 Bank에서

public void outMoney(int money)  {

		if(this.money<money) {
			System.out.println("잔액부족");
			return;
		}
	}

return을 썼는데 void인데도 결과 나온다 -> 이 때는 이 범위를 벗어나라는 뜻으로 쓰였다.

그래서 제대로 결과가 나온다.

package com.day03;

public class Bank {
	String name; //계좌 이름
	int money;   //계좌 잔액 -> 전역변수, 멤버 변수
	
	//입금하다
	public void inputMoney(int money) { // 입금할 수 있게 int don이라는 매개 변수 만들어줌 -> 지역변수임
		this.money += money; //5번 money = 6번 money
	}
	
	//출금하다 잔액 부족
	public void outMoney(int money)  {
		
//		if(this.money >= money) { //5번 money >= 9번 money
//			this.money -= money;
//		} else {
//			System.out.println("잔액이 부족합니다.");
//		}
		if(this.money<money) {
			System.out.println("잔액부족");
			return;
		}
	}
	
	//잔액확인
	public void getMoney() {
		System.out.println(name + "님 잔액 : " + money);
	}
	
	public static void main(String[] args) {
		Bank b1 = new Bank();
		b1.name = "홍길동";//홍길동이라는 사람이 은행 업무를 볼 것
		//입금하다
		b1.inputMoney(5000); //5000원을 입금한다
		b1.getMoney();
		//출금하다
		b1.outMoney(7000);
		b1.getMoney();
		//이순신 고객이 만원을 입금
		Bank b2 = new Bank();
		b2.name ="이순신";
		b2.inputMoney(10000);
		b2.getMoney();
	}
	
}

홍길동님 잔액 : 5000
잔액부족
홍길동님 잔액 : 5000
이순신님 잔액 : 10000

 

Gugudan.java

package com.day03;

public class Gugudan {

	int dan;
	public void print() {
		for(int i = 1; i < 10; i++) {
			System.out.println(dan + "*" + i + "=" + dan*i);
		}
	}
	
	public static void main(String[] args) {
		Gugudan g1 = new Gugudan();
		g1.dan=5;
		g1.print();
	}

}

5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
5*6=30
5*7=35
5*8=40
5*9=45

 

package com.day03;

public class Gugudan {

	int dan;
	public void print() {
		for(int i = 1; i < 10; i++) {
			System.out.println(dan + "*" + i + "=" + dan*i);
		}
	}
	
	public static void main(String[] args) {
		Gugudan g1 = new Gugudan();
		g1.dan=5;
		g1.print();
		
		Gugudan g2 = new Gugudan();
		g2.dan=6;
		g2.print();
	}

}

5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
5*6=30
5*7=35
5*8=40
5*9=45


6*1=6
6*2=12
6*3=18
6*4=24
6*5=30
6*6=36
6*7=42
6*8=48
6*9=54

 

 

새로운 객체를 생성하는 생성자

생성자는 클래스 이름이며 void가 없다 -> 멤버변수 초기값 설정

void를 쓰면 그냥 함수가 되어버린다.

public 

 

Gugudan g1 = new Gugudan();

클래스   객체

 

생성자를 이용해서 결과 출력하기

package com.day03;

public class Gugudan {

	int dan;
	
	public Gugudan(int dan) { //생성자
		this.dan=dan;
	}
	public void print() {
		for(int i = 1; i < 10; i++) {
			System.out.println(dan + "*" + i + "=" + dan*i);
		}
	}
	
	public static void main(String[] args) {
		Gugudan g1 = new Gugudan(5); //생성자 : 클래스 이름이어야 함
		//g1.dan=5;
		g1.print();
		
		Gugudan g2 = new Gugudan(6);
		//g2.dan=6;
		g2.print();
	}

}

5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
5*6=30
5*7=35
5*8=40
5*9=45


6*1=6
6*2=12
6*3=18
6*4=24
6*5=30
6*6=36
6*7=42
6*8=48
6*9=54

 

다시 Bank로 가서.

생성자는 보통 가장 먼저 적어준다.

package com.day03;

public class Bank {
	String name; //계좌 이름
	int money;   //계좌 잔액 -> 전역변수, 멤버 변수
	
	public Bank() { //생성자 만듦
		System.out.println("생성자");
	}
	
	//입금하다
	public void inputMoney(int money) { // 입금할 수 있게 int don이라는 매개 변수 만들어줌 -> 지역변수임
		this.money += money; //5번 money = 6번 money
	}
	
	//출금하다 잔액 부족
	public void outMoney(int money)  {
		
//		if(this.money >= money) { //5번 money >= 9번 money
//			this.money -= money;
//		} else {
//			System.out.println("잔액이 부족합니다.");
//		}
		if(this.money<money) {
			System.out.println("잔액부족");
			return;
		}
	}
	
	//잔액확인
	public void getMoney() {
		System.out.println(name + "님 잔액 : " + money);
	}
	
	public static void main(String[] args) {
		Bank b1 = new Bank();
		b1.name = "홍길동";//홍길동이라는 사람이 은행 업무를 볼 것
		//입금하다
		b1.inputMoney(5000); //5000원을 입금한다
		b1.getMoney();
		//출금하다
		b1.outMoney(7000);
		b1.getMoney();
		//이순신 고객이 만원을 입금
		Bank b2 = new Bank();
		b2.name ="이순신";
		b2.inputMoney(10000);
		b2.getMoney();
	}
	
}

생성자
홍길동님 잔액 : 5000
잔액부족
홍길동님 잔액 : 5000
생성자
이순신님 잔액 : 10000

 

Bank b1 = new Bank();
		b1.name = "홍길동";//홍길동이라는 사람이 은행 업무를 볼 것
		//입금하다
		b1.inputMoney(5000); //5000원을 입금한다
		b1.getMoney();
		//출금하다
		b1.outMoney(7000);
		b1.getMoney();
		//이순신 고객이 만원을 입금
		Bank b2 = new Bank();
		b2.name ="이순신";
		b2.inputMoney(10000);
		b2.getMoney();

new 는 생성자를 부른다.

 

package com.day03;

public class Bank {
	String name; //계좌 이름
	int money;   //계좌 잔액 -> 전역변수, 멤버 변수
	
	public Bank() { //생성자 만듦 -> () 사이에 인자가 없다 : 디폴트 생성자 = 기본 생성자, 생략 가능
		System.out.println("생성자");
	}
	
	//입금하다
	public void inputMoney(int money) { // 입금할 수 있게 int don이라는 매개 변수 만들어줌 -> 지역변수임
		this.money += money; //5번 money = 6번 money
	}
	
	//출금하다 잔액 부족
	public void outMoney(int money)  {
		
//		if(this.money >= money) { //5번 money >= 9번 money
//			this.money -= money;
//		} else {
//			System.out.println("잔액이 부족합니다.");
//		}
		if(this.money<money) {
			System.out.println("잔액부족");
			return;
		}
	}
	
	//잔액확인
	public void getMoney() {
		System.out.println(name + "님 잔액 : " + money);
	}
	
	public static void main(String[] args) {
		Bank b1 = new Bank();
		b1.name = "홍길동";//홍길동이라는 사람이 은행 업무를 볼 것
		//입금하다
		b1.inputMoney(5000); //5000원을 입금한다
		b1.getMoney();
		//출금하다
		b1.outMoney(7000);
		b1.getMoney();
		//이순신 고객이 만원을 입금
		Bank b2 = new Bank();
		b2.name ="이순신";
		b2.inputMoney(10000);
		b2.getMoney();
	}
	
}

 

() 사이에 인자가 없다 : 디폴트 생성자 = 기본 생성자, 생략 가능

 

Gugudan g3 = new Gugudan();
		g3.dan=8;
		g3.print();

에러가 난다.

디폴트 생성자 -> 생략 가능 -> 생략 : 아~ 디폴트 생성자가 사용하는가보다~ 라고 생각하는데 이미 앞에서

Gugudan g1 = new Gugudan(5); //생성자 : 클래스 이름이어야 함
		//g1.dan=5;
		g1.print();
		
		Gugudan g2 = new Gugudan(6);
		//g2.dan=6;
		g2.print();
		
		Gugudan g3 = new Gugudan();
		g3.dan=8;
		g3.print();

이렇게 이미 지정된 애들이 있어서 디폴트 생성자를 생략할 수 없다.

public Gugudan() {
		
	}

아무것도 적지 않더라도 적어줘야 오류가 나지 않는다.

package com.day03;

public class Gugudan {

	int dan;
	
	public Gugudan() {
		
	}
	
	public Gugudan(int dan) { //생성자
		this.dan=dan;
	}
	public void print() {
		for(int i = 1; i < 10; i++) {
			System.out.println(dan + "*" + i + "=" + dan*i);
		}
	}
	
	public static void main(String[] args) {
		Gugudan g1 = new Gugudan(5); //생성자 : 클래스 이름이어야 함
		//g1.dan=5;
		g1.print();
		
		Gugudan g2 = new Gugudan(6);
		//g2.dan=6;
		g2.print();
		
		Gugudan g3 = new Gugudan();
		g3.dan=8;
		g3.print();
	}

}
package com.day03;

public class Gugudan {

	int dan;
	
	public Gugudan() { // 같은 이름의 생성자 2개 -> 생성자 오버로딩 | 디폴트 생성자
		
	}
	
	public Gugudan(int dan) { //생성자
		this.dan=dan;
	}
	public void print() {
		for(int i = 1; i < 10; i++) {
			System.out.println(dan + "*" + i + "=" + dan*i);
		}
	}
	
	public static void main(String[] args) {
		Gugudan g1 = new Gugudan(5); //생성자 : 클래스 이름이어야 함
		//g1.dan=5;
		g1.print();
		
		Gugudan g2 = new Gugudan(6); //생성자가 2개인데 인자가 있으므로 자동으로 11번으로 감
		//g2.dan=6;
		g2.print();
		
		Gugudan g3 = new Gugudan(); // 생성자 2개인데 얘는 인자가 없으므로 자동으로 7번으로 감
		g3.dan=8;
		g3.print();
	}

}

 

메서드도 오버로딩 가능 -> 메서드도 같은 이름으로 오버로딩 하고 다르게 접근할 수 있다.

 


현재까지는 배열에 int만 넣었음

다음 시간 : 객체 추가 설명, 배열 객체

 

ex) 은행원 입장에서 고객이 여러 명 -> a고객의 계좌에 입금 -> 많은 계좌 중 어떤 계좌?

선생님 입장에서 학생은 학번, 이름, 전화번호, 각 과목 성적 등 다 가지고있음 -> 학생의 성정 -> 어느 학생의 어떤 성적?

 

~p.130

728x90
728x90