부스트코스 생활코딩 [쉽게 배우는 자바2] 공부 기록
7. 생성자와 this
package javaChapter2_10;
public class MyOOP {
public static void main(String[] args) {
Print p1 = new Print("----");
p1.A();
}
}
package javaChapter2_10;
class Print {
public String delimiter = "";
public Print(String _delimiter) { //생성자
delimiter = _delimiter;
}
public void A() {
System.out.println(delimiter);
System.out.println("A");
System.out.println("A");
}
public void B() {
System.out.println(delimiter);
System.out.println("B");
System.out.println("B");
}
}
생성자는 클래스 이름과 똑같은 메소드를 정의하면 된다.
package javaChapter2_10;
class Print {
public String delimiter = "";
public Print(String delimiter) { //생성자
this.delimiter = delimiter;
}
public void A() {
System.out.println(this.delimiter);
System.out.println("A");
System.out.println("A");
}
public void B() {
System.out.println(this.delimiter);
System.out.println("B");
System.out.println("B");
}
}
this라는 특수한 키워드는 클래스가 인스턴스화 되었을 때 인스턴스를 가르키는 특수한 이름이다.
8-1. 활용 (클래스화)
Before
package javaChapter2_10;
public class AccountingApp {
// 공급가액
public static double valueOfSupply;
// 부가가치세율
public static double vatRate = 0.1;
public static double getVat() {
return valueOfSupply * vatRate;
}
public static double getTotal() {
return valueOfSupply + getVat();
}
public static void main(String[] args) {
valueOfSupply = 10000.0;
System.out.println("Value of supply : " + valueOfSupply);
System.out.println("VAT : " + getVat());
System.out.println("Total : " + getTotal());
}
}
After
package javaChapter2_10;
class Accounting {
public static double valueOfSupply;
public static double vatRate = 0.1;
public static double getVat() {
return valueOfSupply * vatRate;
}
public static double getTotal() {
return valueOfSupply + getVat();
}
}
public class AccountingApp {
public static void main(String[] args) {
Accounting.valueOfSupply = 10000.0;
System.out.println("Value of supply : " + Accounting.valueOfSupply);
System.out.println("VAT : " + Accounting.getVat());
System.out.println("Total : " + Accounting.getTotal());
}
}
8.2 활용 (인스턴스화)
클래스를 인스턴스화~!
Before
package javaChapter2_10;
class Accounting {
public static double valueOfSupply;
public static double vatRate = 0.1;
public static double getVat() {
return valueOfSupply * vatRate;
}
public static double getTotal() {
return valueOfSupply + getVat();
}
}
public class AccountingApp {
public static void main(String[] args) {
Accounting.valueOfSupply = 10000.0;
System.out.println("Value of supply : " + Accounting.valueOfSupply);
System.out.println("VAT : " + Accounting.getVat());
System.out.println("Total : " + Accounting.getTotal());
}
}
After
package javaChapter2_10;
class Accounting {
public double valueOfSupply;
public static double vatRate = 0.1;
public double getVat() {
return valueOfSupply * vatRate;
}
public double getTotal() {
return valueOfSupply + getVat();
}
}
public class AccountingApp {
public static void main(String[] args) {
System.out.println("==== 10,000원 ====");
Accounting v1 = new Accounting();
v1.valueOfSupply = 10000.0;
System.out.println("Value of supply : " + v1.valueOfSupply);
System.out.println("VAT : " + v1.getVat());
System.out.println("Total : " + v1.getTotal());
System.out.println("==== 20,000원 ====");
Accounting v2 = new Accounting();
v2.valueOfSupply = 20000.0;
System.out.println("Value of supply : " + v2.valueOfSupply);
System.out.println("VAT : " + v2.getVat());
System.out.println("Total : " + v2.getTotal());
}
}
v1과 v2가 각자 독립된 상태를 유지하고 있기 때문에!
단지 호출만 해서 안심하고 인스턴스를 사용할 수 있다.
영상 보기 전에 스스로 인스턴스화 해봤다.
생각하며 인스턴스화 했고, 다행히 잘 작동했다.
package javaChapter2_10;
class Accounting {
public double valueOfSupply;
public static double vatRate = 0.1;
public Accounting(double valueOfSupply) {
this.valueOfSupply = valueOfSupply;
}
public double getVat() {
return valueOfSupply * vatRate;
}
public double getTotal() {
return valueOfSupply + getVat();
}
}
public class AccountingApp {
public static void main(String[] args) {
System.out.println("==== 10,000원 ====");
Accounting v1 = new Accounting(10000.0);
System.out.println("Value of supply : " + v1.valueOfSupply);
System.out.println("VAT : " + v1.getVat());
System.out.println("Total : " + v1.getTotal());
System.out.println("==== 20,000원 ====");
Accounting v2 = new Accounting(20000.0);
System.out.println("Value of supply : " + v2.valueOfSupply);
System.out.println("VAT : " + v2.getVat());
System.out.println("Total : " + v2.getTotal());
}
}
생성자와 this를 활용!
9. 수업을 마치며
객체지향은 알 것 같으면서도 모르겠다.
다만 이전보다 확실히 알게된 건 많다는 것.
될 때마다 짜릿함을 느끼며 했다.
다음은 상속을 할 차례.
잘 해보자.
300x250
'Language > JAVA' 카테고리의 다른 글
[JSP] 'Dynamic Web Project' 프로젝트 생성 (0) | 2022.02.10 |
---|---|
[JAVA] 상속 1~6 Inheritance , overriding , overloading , super (0) | 2022.02.10 |
[JAVA] 객체지향 프로그래밍 4~6 class instance static (0) | 2022.02.08 |
[JAVA] 객체지향 프로그래밍 1~3 클래스, 인스턴스, 변수, 메소드 (0) | 2022.02.07 |
[JAVA] 메소드 1~9 method , class, static, instance (0) | 2022.02.06 |