public class ExClass { // 반드시 대문자로 시작. 알파벳,숫자,_
private 자료형 인스턴스변수( = 속성 = 필드)명;
public ExClass(){ }
public return_type method(){
}
}
public class Square {
private int side; // side 라는 가로세로 변수 생성
public Square() { // 매개 변수 없는 Square 함수 생성
System.out.println("매개변수 없는 생성자 함수 호출");
} // 생성자 함수 : return type 없고 클래스명과 같은 함수
public Square(int side) { // 매개변수가 있는 생성자 함수 용도 : 데이터의 초기화
this.side = side;
System.out.println("매개변수 있는 생성자 함수 호출");
}
public int area() { // 넓이를 구하는 area 생성
return side * side;
}
public int getSide() {
return side;
}
public void setSide(int side) {
this.side = side;
}
}
public class SquareMain {
public static void main(String[] args) {
Square s1 = new Square(); //s1이라는 새로운 Square 생성
System.out.println("s1의 한 변은" + s1.getSide());
s1.setSide(2);
System.out.println("수정된 s1의 넓이는 : "+s1.area());
Square s2 = new Square(10);
System.out.println("s2의 한 변은 " + s2.getSide());
System.out.println("s2의 넓이는 " + s2.area());
}
}
매개변수 없는 생성자 함수 호출
s1의 한 변은0
수정된 s1의 넓이는 : 4
매개변수 있는 생성자 함수 호출
s2의 한 변은 10
s2의 넓이는 100
package com.lec.ex2_human.kid;
public class Kid {
private String name;
public Kid(String name) {
this.name = name;
System.out.println("Kid name 초기화하는 생성자 함수");
}
}
package com.lec.ex2_human;
public class Man {
private String name;
private int age;
private int height;
private double weight;
// 개발자가 생성자 함수를 만들면 컴파일러는 디폴트 생성자 함수를 만들지 않는다
// 따라서 생성자 함수를 만들고 디폴트 생성자 함수가 필요하면 만들어야 한다
public Man() {
System.out.println("매개변수 없는 생성자 함수");
}
public Man(String name, int age, int height, double weight) {
this.setName(name);
this.setAge(age);
this.height = height;
this.weight = weight;
System.out.println("데이터 4개 초기화하는 생성자 함수");
}
public Man(String name) {
System.out.println("이름 초기화하는 생성자 함수");
}
public Man(int height) {
this.height = height;
}
public Man(double weight) {
this.weight = weight;
}
public double calculateBMI() {//객체안에 height와 weight로 BMI 지수 return
double result = weight / ( (height*0.01) * (weight*0.01) );
return result;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
}
package com.lec.ex2_human;
public class Woman {
public Woman() {
System.out.println("매개변수 없는 Woman 생성자 함수");
}
}
package com.lec.ex2_humanMain;
import com.lec.ex2_human.Man;
import com.lec.ex2_human.Woman;
import com.lec.ex2_human.kid.Kid;
public class HumanMain {
public static void main(String[] args) {
Woman woman1 = new Woman();
Woman woman2 = new Woman();
// ---------------------------
//레퍼런스 변수 선언 = 객체생성(인스턴스 생성)
System.out.println("woman1과 woman2가 같은지" + (woman1 == woman2));
System.out.println("woman1과 woman2가 같은지" + woman1.equals(woman2));
//객체끼리 비교시 equals 사용
Kid kid = new Kid("홍아기");
Man hong = new Man("홍길동");
Man kim = new Man("김길동", 22, 170, 67);
Man kim2 = kim;
kim2.setHeight(185);
kim2.setWeight(300);
System.out.println("kim과 kim2가 같은 객체인지 " + kim.equals(kim2));
double bmi = kim.calculateBMI();
System.out.println(kim2.getName()+"의 bmi지수는" + bmi);
}
}
매개변수 없는 Woman 생성자 함수
매개변수 없는 Woman 생성자 함수
woman1과 woman2가 같은지false
woman1과 woman2가 같은지false
Kid name 초기화하는 생성자 함수
이름 초기화하는 생성자 함수
데이터 4개 초기화하는 생성자 함수
kim과 kim2가 같은 객체인지 true
김길동의 bmi지수는54.05405405405405
계좌 개설, 예금, 출금, 잔액 기능이 있는 프로그램 만들기
public class Account {
private String accountNo;
private String ownerName;
private long balance;
public Account() {}
public Account(String accountNo, String ownerName) {
this.accountNo = accountNo;
this.ownerName = ownerName;
System.out.println(ownerName + "님 계좌 개설 감사합니다. 잔액 : "+ balance);
}
public Account(String accountNo, String ownerName, long balance) {
this.accountNo = accountNo;
this.ownerName = ownerName;
this.balance = balance;
System.out.println(ownerName+"님 계좌 개설 감사합니다. 잔액 : "+balance);
}
public void deposite(long money) {//예금하기
balance += money;
System.out.println(money+"원 예금하여 잔액 : "+balance);
}
public void withdraw(long money) {//잔액이 있을 경우에만 인출되게 하기
if(balance>=money) {
balance -= money;
System.out.println(money+"원 인출하여 잔액 :" + balance);
}else {
System.out.println("잔액이 부족하여 인출 불가합니다");
}
}
public void infoPrint() {
// "110-333-5555" 홍길동님 잔액 : 10원 출력
// System.out.println("\""+accountNo+"\" "+ ownerName +"님 잔액 :" + balance + "원" );
System.out.printf("\" %s \"%s님 잔액 : %d원\n", accountNo, ownerName, balance);
}
//setter : name 계좌번호, 잔액은 변경할 수 없게 이름은 변경 가능하게
//getter
public String getOwnerName() {
return ownerName;
}
public void setOwnerName(String ownerName) {
this.ownerName = ownerName;
}
public String getAccountNo() {
return accountNo;
}
public long getBalance() {
return balance;
}
public String infoString() {
//return "\""+accountNo+"\" "+ ownerName +"님 잔액 :" + balance + "원";
return String.format("\" %s \"%s님 잔액 : %d원\n", accountNo, ownerName, balance);
}
}
package com.lec.ex3_account;
public class AccountMain {
public static void main(String[] args) {
Account hong = new Account("110-1", "홍길동", 10000);
hong.infoPrint();
// System.out.println(hong.infoString());
Account hong1 = new Account("110-2", "홍길순");
hong1.infoPrint();
Account hong2 = new Account();
System.out.println(hong2.infoString());
hong.withdraw(5000);
hong.deposite(500);
hong1.deposite(2200000000L);
hong1.withdraw(2200000000L);
}
}
홍길동님 계좌 개설 감사합니다. 잔액 : 10000
" 110-1 "홍길동님 잔액 : 10000원
홍길순님 계좌 개설 감사합니다. 잔액 : 0
" 110-2 "홍길순님 잔액 : 0원
" null "null님 잔액 : 0원 //입력을 안 하면 null로 초기화
5000원 인출하여 잔액 :5000
500원 예금하여 잔액 : 5500
2200000000원 예금하여 잔액 : 2200000000
2200000000원 인출하여 잔액 :0