class Animal{ // 동물 이라는 부모 클래스
String name;
public void cry(){
System.out.println(name + " is crying"); // Animal class에 cry 이라는 메소드
}
}
class Dog extends Animal{ // Animal 이라는 부모 클래스에 상속되는 자식 클래스 생성
Dog(String name){
this.name = name;
}
public void swim(){
System.out.println(name + " is swimming"); // Dog class에 swim 이라는 메소드
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("코코"); // 생성자로 Dog 클래스에 dog = "코코" 라는 인스턴스를 생성
dog.cry(); // dog class에 있는 함수들을 호출. cry는 부모클래스꺼니까 쓸수있다
dog.swim();
Animal dog2 = new Dog("미미"); // 생성자로 Animal 클래스에 dog2 = "미미" 라는 인스턴스를 생성
dog2.cry();
// dog2.swim(); // Animal 클래스는 swim을 가지고있지 않으므로 실행 에러
}
}
코코 is crying
코코 is swimming
미미 is crying
1. 메소드 이름이 동일해야 한다.
2. 매개 변수의 개수나 type이 달라야 한다.
class Animal{
String name;
String color;
public Animal(String name) {
this.name = name;
}
public void cry(){
System.out.println(name + " is crying");
}
}
class Dog extends Animal{
public Dog(String name) {
super(name);
}
public void cry(){
System.out.println(name + " is barking");
}
}
public class Main {
public static void main(String[] args) {
Animal dog = new Dog("코코");
dog.cry();
}
}
코코 is barking
: 부모 클래스의 cry함수는 override되어서 자식 클래스의 cry가 실행되므로 barking이 나온다.
private : 같은 클래스 내에서만 접근이 가능, 외부 클래스에서 사용할 수 없다.
default(nothing) : 같은 패키지 내에서만 접근이 가능하다. 아무것도 선언하지 않은 경우
protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능하다.
public : 접근 제한이 없다.