class Main {
public static void main(String[] args) {
// new 클래스명().메서드명(); 사용 예시
new 자동차().달리다();
// 클래스명 객체 = new 클래스명(); 사용 예시
사슴 a사슴 = new 사슴();
}
}
class 자동차 {
void 달리다() {
System.out.println("자동차가 달립니다.");
}
}
class 사슴 {
void 달리다() {
System.out.println("사슴이 달립니다.");
}
}
기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환한다.
// 자동 형변환 가능
int intNumber = 10;
double doubleNumber = intNumber;
// 자동 형변환 불가능
double doubleNumber = 5.5;
int intNumber = doubleNumber;
이럴때 강제형변환 필요
int intNumber = (int) doubleNumber;
테스트를 우선시하며, 개발자는 코드를 작성하기 전에 테스트 케이스를 작성합니다
코드의 품질을 향상시키고 버그를 줄이는 등의 장점이 있습니다.
작성하는 과정에서 코드 요구사항을 명확히 파악하고, 코드 작성 전에 예상되는 문제점을 미리 파악할 수 있어 개발 생산성을 높일 수 있습니다.
TDD 주요 흐름
* RED : 실패하는 테스트 코드 만들기
* GREEN : 만든 테스트 코드가 통과하도록 코드 짜기 (최소한의 코드)
* BLUE : RED, GREEN 반복후 리팩토링 (기능 추가 금지)
class Main {
public static void main(String[] args) {
// 클래스명.메서드() 사용가능
자동차.달리다();
}
}
class 자동차 {
static void 달리다() {
System.out.println("자동차가 달립니다.");
}
}
class Main {
public static void main(String[] args) {
// 클래스명.메서드() 사용 불가능
// 인스턴스(객체)화 해야 사공가능
자동차.달리다(); // 작동 불가
자동자 페라리 = new 자동차();
페라리.달리다() // 작동 가능
}
}
class 자동차 {
void 달리다() {
System.out.println("자동차가 달립니다.");
}
}
// 불가능
class Kia extends Car, Korea{
}
class Car {
void run() {
System.out.println("Car is run");
}
}
class Kia extends Car{
}
// 사용가능
Kia ray = new Kia();
ray.run(); // "Car is run"
상위 클래스의 메서드와
- 메소드명이 같아야 한다.
- 매개변수가 같아야 한다.
- 반환타입이 같아야 한다.
// 오버라이드 사용 예시
class Car {
void run() {
System.out.println("Car is run");
}
}
// 벤츠는 달릴때 달랐으면 좋겠다
class Benz extends Car{
void run() {
System.out.println("Benz is fast");
}
}
Benz g63_AMG = new Benz();
g63_AMG.run(); // "Benz is fast"