abstract class A {
abstract void abc();// 미완성 메소드
}
class B extends A {
void abc() {// 중괄호 안에 아무런 코드가 없어도 완성된 메소드
}
}
abstract class A {
abstract void abc();
}
class B extends A {
void abc() {
System.out.println("방법 1. 자식 클래스 생성 및 추상 클래스 구현");
}
}
public class AbstractClass_1 {
public static void main(String[] args) {
A b1 = new B();
A b2 = new B();
b1.abc();
b2.abc();
}
}
abstract class A {
abstract void abc();
}
public class AbstractClass_2 {
public static void main(String[] args) {
A a1 = new A() {
void abc() {
System.out.println("방법 2. 익명 이너 클래스 방법으로 객체 생성");
}
};
A a2 = new A() {
void abc() {
System.out.println("방법 2. 익명 이너 클래스 방법으로 객체 생성");
}
};
a1.abc();
a2.abc();
}
}
interface A {
public static final int a = 3;
public abstract void abc();
}
interface B {
int b = 3;
void bcd();
}
interface A {
int a = 3;
void abc();
}
class B implements A {
public void abc() {
System.out.println("방법 1. 자식 클래스 생성자로 객체 생성");
}
}
public class CreateObjectOfInterface_1 {
public static void main(String[] args) {
A b1 = new B();
A b2 = new B();
b1.abc();
b2.abc();
}
}
interface A {
int a = 3;
void abc();
}
public class CreateObjectOfInterface_2 {
public static void main(String[] args) {
A a1 = new A() {
public void abc() {
System.out.println("방법 2. 익명 이너 클래스를 이용한 객체 생성");
}
};
A a2 = new A() {
public void abc() {
System.out.println("방법 2. 익명 이너 클래스를 이용한 객체 생성");
}
};
a1.abc();
a2.abc();
}
}
interface A {
void abc();
default void bcd() {
System.out.println("A 인터페이스의 bcd()");
}
}
class B implements A {
public void abc() {
System.out.println("B 클래스의 abc()");
}
}
class C implements A {
public void abc() {
System.out.println("C 클래스의 abc()");
}
public void bcd() {
System.out.println("C 클래스의 bcd()");
}
}
public class DefaultMethod_1 {
public static void main(String[] args) {
A a1 = new B();
A a2 = new C();
a1.abc();
a1.bcd();
a2.abc();
a2.bcd();
}
}
interface A {
default void abc() {
System.out.println("A 인터페이스의 abc()");
}
}
class B implements A {
public void abc() {
A.super.abc();// 요기입니다요 요기 <<<<<<-------
System.out.println("B 클래스의 abc()");
}
}
public class DefaultMethod_2 {
public static void main(String[] args) {
B b = new B();
b.abc();
}
}
interface A {
static void abc() {
System.out.println("A 인터페이스의 정적 메소드 abc()");
}
}
public class StaticMethod {
public static void main(String[] args) {
A.abc();
}
}
참조
https://velog.io/@garam87/%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4abstract-class