Object-Oriented Programming : 객체지향적 프로그래밍
Class : object를 만드는 청사진. 변수와 메소드를 정의함.
public class Car{
String color;
int speed;
//field
void accelerate(){
speed += 10;
}
// method
}
Object : class의 인스턴스. new 키워드를 사용해서 만들어짐.
Car myCar = new Car();
// Car 클래스의 myCar라는 새로운 객체 생성
myCar.color = "red";
myCar.accelerate();
// 클래스 정의 시의 변수와 메소드 사용 가능
Constructor : 객체가 생성될 때 초기화 할 수 있는 특별한 메소드
public class Car{
String color;
int speed;
//Constructor
public Car(String color, int speed){
this.color = color;
this.speed = speed;
}
}
Method : class 안에 존재하는 함수들
public class Car{
String color;
int speed;
// Method
void accelerate(){
speed += 10;
}
}
상속 : 다른 class의 메소드와 변수를 상속 받는 것
extends 키워드 사용
- superclass : 상위 클래스
- subclass : 하위 클래스
장점 : Reusability(재사용성), Hierarchy(상하관계), Overriding(오버라이딩)
생성자에서 super 키워드 사용 가능
public class Animal{
private String name;
// Constructor
public Animal(String name){
this.name = name;
}
// Method
public void makeSound(){
System.out.println("Some animal Sound");
}
→ 상위 클래스
public class Dog extends Animal{
// Constructor
public Dog(String name){
super(name);
}
@Override
public void makeSound(){
System.out.println("Bark");
}
→ 하위 클래스

Method Overriding : 상위 클래스의 메소드를 하위 클래스에서 재사용 하는 것
Method Overloading : 같은 이름, 다른 인자를 가지는 메소드를 만드는 것.
반드시 다른 인자를 가져야 함.
public class MathOperations{
// 두 정수 더하기
public int add(int a, int b)
return a + b;
// 세 정수 더하기로 overloading
public int add(int a, int b, int c)
return a + b + c;
// 두 실수 더하기로 overloading
public double add(double a, double b)
return a + b;
}
Dynamic Method Dispatch : 동적 메소드 디스패치. 하위 클래스는 상위 클래스를 대체할 수 있다.
public static void main(String[] args){
Animal myDog = new Dog("Buddy");
Animal myCat = new Cat("Whiskers");
}
default : 기본값. 같은 package 내에서 사용 가능
public : 어디에서나, 누구나 사용 가능
private : class 내부에서만 사용 가능
protected : 같은 package + package 밖의 상속된 하위 클래스에서 사용 가능
abstract class Shape{ // 추상 클래스
abstract double area(); // 추상 메소드
}
상속의 역할.abstract class Shape{
double length; // 변수
abstract double area(); // 추상 메소드
void display(){ // 일반 메소드
System.out.println("Displaying Shape");
}
}
overriding을 통해 메소드의 세부 내용을 채워야 함.A는 B다의 관계 implements 키워드 사용. 한 번에 다양한 인터페이스 implement 가능interface Sound {
void makeSound();
}
class Dog implements Sound{
@Override
public void makeSound(){
System.out.println("Bark");
}
}
기능에 관한 내용