class Person {
String name;
int age;
// constructor, methods, etc.
}
Person b;
// 변수 선언 시 객체가 됨
b = new Person("지나", 1, 1000);
// 객체가 메모리에 할당되는 순간 인스턴스화
class Coffee {
// 속성(멤버 변수)
private String type;
private int size;
// constructor
public Coffee(String type, int size) {
this.type = type;
this.size = size;
}
// Coffee c = new Coffee(); 시 default로 생성되는 객체
public Coffee() {
this.type = "에스프레소";
this.size = 1;
}
// 동작(메서드)
public void describe() {
System.out.println("주문한 커피 - 종류: " + type + ", 크기: " + size + "oz");
}
}
public class CoffeeShop {
public static void main(String[] args) {
Coffee espresso = new Coffee(); // 객체 > 인스턴스
Coffee latte; // 객체
latte = new Coffee("라떼", 12); // 인스턴스
espresso.describe();
latte.describe();
}
}
public class Person {
// 멤버변수(속성)
String name;
int IQ;
int str;
private static final String WORD = "공부해";
// constructor, methods, etc.
// static 메서드
private static void talk(Person a, Person b) {
System.out.println(a.name + " & " + b.name + "이 대화를 시작했다!");
}
public static void main(String[] args) {
Person a = new Person(); // 객체 >> 인스턴스
a.levelUp();
Person b; // 객체
b = new Person("지나", 1000, 1); // 인스턴스
b.levelUp();
Person.talk(a, b);
System.out.println(Person.WORD);
}
}
class Calculator {
// 오버로딩 매개변수의 개수, 타입을 다르게 정의 가능
void multiply(int a, int b) {
System.out.println("결과는 : " + (a * b) + "입니다.");
}
void multiply(int a, int b, int c) {
System.out.println("결과는 : " + (a * b * c) + "입니다.");
}
void multiply(double a, double b) {
System.out.println("결과는 : " + (a * b) + "입니다.");
}
// 오버로딩 매개변수의 순서를 바꿀 수도 있다
void pay(String a, int b) {
System.out.println(a + "가 " + b + "원만큼 계산합니다. ");
}
void pay(int a, String b) {
System.out.println(b + "가 " + a + "원만큼 계산합니다. ");
}
}
정의: 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의하는 것. 상속 관계에서 사용되며 static, final로 선언한 메서드는 오버라이딩이 불가능.
예시:
class Animal {
void eat() {
System.out.println("먹습니다.");
}
}
// 오버라이딩
class Person extends Animal {
@Override
void eat() {
System.out.println("사람처럼 먹습니다. ");
}
}
interface Animal {
void eat();
}
class Person implements Animal {
@Override
public void eat() {
System.out.println("사람처럼 먹습니다. ");
}
}
// 데이터 추상화
abstract class Animal {
public abstract void animalSound();
public void sleep() {
System.out.println("zzz");
}
}
class Cat extends Animal {
public void animalSound() {
System.out.println("야옹");
}
}
class Dog extends Animal {
public void animalSound() {
System.out.println("왈왈");
}
}