여러 class를 상속받을순 없음.
하나의 class만 상속 받음.
오버로딩
기존에 없는 새로운 method를 정의 하는데 같은 이름을 가지는 함수를 정의하는 것
한 class내에서 동일한 이름의 method를 여러개 갖는 것
이름이 같은데 무조건 오버로딩은 아님
조건
method이름이 동일해야 함.
매개 변수의 갯수나 혹은 type이 달라야 함
(변수의 이름은 중요하지 않음.)
public class Main {
public static void main(String[] args) {
// write your code here
}
int add(int x, int y, int z){
return x+y+z;
}
long add(int a, int b, int c){
return a+b+c;
}
}
이 경우 return type(int, long)만 다른 경우는 오버로딩으로 치지 않음
오버라이딩
부모에 있는 똑같은 함수를 자식이 구현해서 부모에 있는 함수를 없는체 하는것
부모의 class로부터 상속받은 method를 똑같이 자식 class에 정의하는 것.
그래서 그것을 덮어 버리는 것, 그래서 부모에 있던 원래 함수의 내용은 없는 셈 치는 것
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);
}
@Override
public void cry() {
System.out.println(name + " is barking");
}
}
public class Main {
public static void main(String[] args) {
// write your code here
Animal dog = new Dog("코코");
dog.cry();
}
}
실행값: 코코 is barking
객체지향 프로그래밍이란 좀 다르게 표현하면 객체들 간의 상호 작용을 코드로 표현한 것
그런데 객체들이 서로서로 붕어빵1, 붕어빵2, 붕어빵 찍는 아주머니..이런 것들 간의 관계가 생길 때
접근할 수 있는 것과 아닌 것의 권한을 구분할 필요가 생김. 그래서 클래스의 내부에 선언된 데이터의
부적절한 사용으로부터 보호해 주는 게 이 접근 제어자가 하는 역할. 전문용어로 캡슐화,encapsulation(인캡슐레이션)
접근 제어를 짜는 이 캡슐화가 가능할 수 있도록 돕는 자바 언어에 있는 하나의 도구.
사실은 객체지향 프로그래밍을 하는데 있어서 캡슐화가 중요하다. 캡슐화를 달성하기 위한 도구로 접근제어자를 사용한다.
추상메소드를 선언할 수 있는 클래스
클래스와는 다르게 상속받는 그 자식 클래스 없이 그 자체로 인스턴스를 생성할 수 없음.
설계만 되어 있고 구현체가 없는 것을 이야기함 중괄호 안에 있는 블럭 구현체는 없다는 것이고
그것은 자식클래스에서 모두 구현해야 된다는 것을 의미함. -> body를 가질 수 없음
객체를 그 자체로 생성할 순 없다.
class 상속과 마찬가지로 extend 키워드를 쓰고 그래서 다중상속이 불가능하다.
그리고 추상 method에 대해서만 자식클래스에서 무조건 구현해야 된다라는 특징을 가짐.
가장 간단한 문법. 객체의 특정 행동의 특징을 정의하는 것.
함수의 특징이 method 스그니쳐 그러니까 접근제어자 return type method 이름만 정의 하고
함수의 내용은 abstract method 처럼 없다.
인터페이스를 구현하는 class는 인터페이스에 존재하는 상세 내용을 반드시 구현해야 됨.
인터페이스는 구현하는 객체의 동작에 명세, 그리고 다중상속이 가능하다.
그리고 implement 라는 키워드를 이용해서 구현한다. 그리고 method 시그니처만 선언이 가능하다
자바 수업과 알고리즘 수업을 진행했는데 자바도 자바지만 알고리즘을 풀 때 수학적 사고방식이
많이 필요하다는걸 느끼게 되었다. 하다 보면 이것도 익숙해 질 수 있을지 걱정이 되지만...
반복하다보면 몸에 익을거라는 생각을 갖고 열심히 노력해야겠다