오버로딩(Overloading)
pulbic class Example{
public int add(int a , int b){
return a + b;
}
public int add(int a , int b, int c){
return a + b + c;
}
public int add(double a , double b){
return a + b;
}
}
package programmers;
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) + "입니다.");
}
}
public class MyClass {
public static void main(String[] args) {
int a=1;
int b=2;
int d=4;
Calculator c = new Calculator(); c.multiply(a, b);
c.multiply(a, b, d);
double aa = 1.2;
double bb = 1.4;
c.multiply(aa, bb);
}
}
package programmers;
class Person {
void pay(String a, int b) {
System.out.println(a + "가 " + b + "원만큼 계산합니다.");
}
void pay(int a , String b) {
System.out.println(b + "가 " + a + "원만큼 계산합니다.");
}
}
public class MyClass {
public static void main(String[] args) {
Person c = new Person();
c.pay("영주", 100_000_000);
c.pay(100_000_000, "영주");
}
}
class Animal {
public void sound() {
System.out.println("The animal makes a sound");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("The dog barks");
}
}
상속
package programmers;
class Animal {
void eat() {
System.out.println("먹습니다.");
}
}
class Person extends Animal {
@Override
void eat() {
System.out.println("맛있게 먹습니다.");
}
}
public class MyClass {
public static void main(String[] args) {
Person a = new Person();
a.eat();
}
}
구현
package programmers;
interface Animal {
public void eat();
}
class Person implements Animal {
@Override
public void eat() {
System.out.println("맛있게 먹습니다.");
}
}
public class MyClass {
public static void main(String[] args) {
Person a = new Person();
a.eat();
}
}
interface 메서드는 왜 public을 사용해야 하는가?
인터페이스 내의 모든 메서드는 기본적으로 public
이고 abstract
입니다. 즉, 인터페이스를 구현하는 모든 클래스는 이 메서드들을 public
접근 제한자를 사용하여 구현해야 합니다.
이는 인터페이스가 정의하는 메서드가 계약(contract)
의 일부이기 때문입니다. 계약을 준수하기 위해서는 구현된 모든 메서드가 인터페이스에서 약속한 대로 외부에 공개(public)되어야 합니다.
클래스가 인터페이스의 메서드를 구현할 때 public
을 생략하면, 메서드는 디폴트 접근 제한자를 가지게 되고, 이는 인터페이스에서 요구하는 public
보다 더 제한적인 접근 수준이므로 오류가 발생합니다.