부트캠프에서 처음으로 java수업을 받고 있기에 기록하는 게 좋다고 생각했고, 수업이 있는 날이면 매일 글을 쓰려고 합니다. 쵀대한 몰랐거나 필요하다고 생각되는 내용 위주로 기록할 예정입니다. (제가 게을러서 이러한 시도를 성공한 적이 없기에 이번 부트캠프 목표 중 1가지입니다. 할 수 있도록 화이팅!!)
부모 클래스의 구현을 재사용하고 확장하는 데 사용된다. 사용하면 부모 클래스의 모든 멤버(필드, 메서드)를 자식이 상속받는다. (📝항상 단일 상속만 가능 즉, 하나의 클래스는 하나의 부모 클래스만 상속받을 수 있다.)
class Animal {
void move() {
System.out.println("Animal moves.");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Dog barks.");
}
}
클래스가 특정 기능을 제공하도록 강제하는 데 사용, 거의 모든 경우 인터페이스를 구현할 때 사용된다. (📝다중 구현이 가능 즉, 하나의 클래스는 여러 개의 인터페이스를 구현할 수 있다)
interface Soundable {
void makeSound();
}
class Cat implements Soundable {
@Override
public void makeSound() {
System.out.println("Cat meows.");
}
}
class ParentClass {
String name;
ParentClass(String name) {
this.name = name;
}
void greet() {
System.out.println("Parent Class: Hello!");
}
}
class ChildClass extends ParentClass {
ChildClass(String name) {
//super()는 자식 클래스의 생성자에서 부모 클래스의 생성자를 호출하는 데 사용
super(name); // 부모 클래스의 생성자 호출
}
@Override
void greet() {
/** super 키워드는 자식 클래스에서 부모의 멤버(필드, 메서드)에 접근하는 데 사용한다.
자식 클래스의 생성자에서 super()를 호출하지 않으면,
컴파일러는 자동으로 부모의 기본 생성자(매개변수가 없는 생성자)를 호출**/
super.greet(); // 부모 클래스의 메서드 호출
System.out.println("Child Class: Hello!");
}
void introduce() {
/** 부모 클래스의 메서드를 오버라이드(Override)한 경우,
부모 클래스의 메서드를 호출하고 싶을 때 부모 클래스의 필드에 접근하고 싶을 때 **/
super.greet();
System.out.println("My name is " + super.name + "."); // 부모 클래스의 필드 접근
}
}
public class SuperExample {
public static void main(String[] args) {
ChildClass child = new ChildClass("Child");
child.greet();
child.introduce();
}
}
오버로딩은 생성자(constructor)에서 자주 사용되지만, 일반 메서드에서도 유용하게 활용됩니다. 오버로딩을 통해 코드의 유연성을 높이고 가독성을 향상시킬 수 있다.
class Person {
String name;
int age;
public Person() { // 기본 생성자
this.name = "Unknown";
this.age = 0;
}
public Person(String name) { // 이름만 초기화하는 생성자
this.name = name;
this.age = 0;
}
public Person(String name, int age) { // 이름과 나이를 초기화하는 생성자
this.name = name;
this.age = age;
}
}
class Calculator {
public int add(int a, int b) { // 정수 덧셈
return a + b;
}
public double add(double a, double b) { // 실수 덧셈
return a + b;
}
public int add(int a, int b, int c) { // 세 개의 정수 덧셈
return a + b + c;
}
}