1학년 때 수강한 강의노트를 간단히 정리.
public class CelsiusToFahrenheit1 {
public static void main(String[] args) {
int c = new Integer(args[0]).intValue();
double f = ((9.0/5.0)*c) + 32;
System.out.println("For Celsius degrees " + c + ",");
DecimalFormat formatter = new DecimalFormat("0.0");
System.out.println("Degrees Fahrenheit = " + formatter.format(f));
}
}
int var1 = 52;
Location A = new Location(37.32, 126.83);
Location B = new Location(37.55, 127.04);
B.longitude = 127.05;
(1)
public class LocationTester {
public static void main(String[] args) {
double lat = 37.55;
Location seoul = new Location(37.55, 127.04);
}
}
(2)
public class Location {
public double lat;
public double lon;
public Location(double latIn, double lonIn) {
this.lat = latIn;
this.lon = lonIn;
return this;
}
}
-> 객체 생성 없이 바로 사용 가능.
public class BankAccount {
public String account_name;
private int balance;
public BankAccount(String account_name, int balance) { // 생성자
this.account_name = account_name;
if (balance >= 0)
this.balance = balance;
else
this.balance = 0;
}
public int getBalance() { // 잔액 접근 메소드
return balance;
}
public boolean deposit(int amount) { // 입금 메소드
boolean result = false;
if (amount < 0)
JOptionPane.showMessageDialog(null, "잘못된 입금액입니다.");
else {
balance = balance + amount;
result = true;
}
return result;
}
public boolean withdraw(int amount) { // 출금 메소드 (변경 메소드)
boolean result = false;
if (amount < 0)
JOptionPane.showMessageDialog(null, "잘못된 출금액입니다.");
else if (amount > balance)
JOptionPane.showMessageDialog(null, "잔고가 부족합니다.");
else {
balance = balance - amount;
result = true;
}
return result;
}
}
public class BankReader {
private String input_line = "";
public char readCommand(String message) {
input_line = JOptionPane.showInputDialog(message).toUpperCase();
return input_line.charAt(0);
}
public int readAmount() {
int answer = 0;
String s = input_line.substring(1, input_line.length());
if (s.length() > 0) {
double dollars_cents = new Double(s).doubleValue();
answer = (int)(dollars_cents*100);
}
else
JOptionPane.showMessageDialog(null, "금액이 입력되지 않았습니다.");
return answer;
}
}
public class BankWriter {
private BankAccount bank;
private String last_transaction = "";
public BankWriter (BankAccount b) { bank = b; } // 생성자
private String uncovert (int i) { // 형식 변환
return new DecimalFormat("0.00").format(i/100.0);
}
public void showTransaction (String message, int amount) { // 화면 출력 (메시지, 금액)
last_transaction = message + " " + uncovert(amount);
System.out.println(bank.account_name + ": " + last_transaction);
System.out.println("Current balance = $" + uncovert(bank.getBalance()));
}
public void showTransaction (String message) { // 화면 출력 (메시지)
last_transaction = message;
System.out.println(bank.account_name + ": " + last_transaction);
}
}
public class AccountController {
private BankReader reader;
private BankWriter writer;
private BankAccount account;
public AccountController(BankReader r, BankWriter w, BankAccount a) {
reader = r;
writer = w;
account = a;
}
public void processTransactions() {
char command = reader.readCommand("명령 D/W/Q와 금액을 입력하세요.");
switch (command) {
case 'Q':
return;
case 'D': {
int amount = reader.readAmount();
if (account.deposit(amount)) writer.showTransaction("입금 $", amount);
else writer.showTransaction("입금 오류 ", amount);
break;
}
case 'W': {
int amount = reader.readAmount();
if (account.withdraw(amount)) writer.showTransaction("출금 $", amount);
else writer.showTransaction("출금 오류 ", amount);
break;
}
default:
writer.showTransaction("잘못된 명령 " + command);
}
this.processTransactions();
}
}
public class AccountManger {
public static void main(String[] args) {
BankReader reader = new BankReader();
BankAccount account = new BankAccount("myaccount", 0);
BankWriter writer = new BankWriter(account);
AccountController controller = new AccountController(reader, writer, account);
controller.processTransactions();
}
}
B를 토대로 A를 만드는 것. (틀을 가져다 쓰는것.)
public class A extend B {...}
부모 클래스 (B), 자식 클래스 (A)
상속되는 것
- public 멤버 변수
- public 메소드
- Protected 접근 지정자
1. 컴파일러는 실행 전에 객체의 해당 클래스(참조 타입)을 알 수 없다.
- 타입 강제 변환(casting)으로 해결.
2. is-a 관계 불일치.
super()
를 자동 호출한다.public class Person {
private String name;
public Person (String n) {
super();
this.name = n;
}
}
-----------------------------------------
public class Student extends Person {
public Student() {
this.setName("Student");
}
}
super(), person()
을 호출하지만, - (3)오버로딩 | 오버라이딩 | |
---|---|---|
메소드 이름 | 동일 | 동일 |
매개변수, 타입 | 다름 | 동일 |
interface B
class A implements B
클래스 (A)
인터페이스 (B) : 모든 필드, 메소드를 타입에 맞게 제공한다.
클래스 / 객체 / 인터페이스 / 상속 / 구현
class B extends A
class B implements A
B(하위) < A(상위)
예시 ) A : 생물, B : 사람 => 생물은 죽는다 → 사람은 죽는다
B = new A. -> A is a B = 생물은 사람이다 (X)
abstract class A