Main類:
public class Main {
public static void main(String[] args) {
Animal animalDog = new Dog();
Animal animalCat = new Cat();
animalDog.eat();
animalCat.eat();
if (animalCat instanceof Cat) {
Cat cat = (Cat) animalCat;
}
//使用匿名內部類
OutPut out = new OutPut(){
@Override
public void showA() {
System.out.println("OutPut->showA()");
}
@Override
public void showB() {
System.out.println("OutPut->showB()");
}
@Override
public void showDown() {
System.out.println("OutPut->showDown()");
}
};
out.showC();
out.showA();
out.showB();
}
}
/*
接口的特點:
1.關鍵字為interface(是什么)
2 修飾符只能是public(前綴)
3.接口可以同時繼承多個父接口(后綴)
4.接口中的屬性只能是常量(不允許有變量) (里面的常量)
5.接口中的方法默認的修飾符是Public ()
6.接口中定義非抽象方法(默認)使用default進行修飾
*/
interface interfaceA{
void showA();
}
interface interfaceB{
void showB();
}
public interface OutPut extends interfaceA,interfaceB{
int AGE =10;//常量
public default void showC(){System.out.println("OutPut->showC()");}
void showDown();
}
animal類:
public abstract class Animal {
int nAge;
String strName;
//普通方法
public void eat(){System.out.println("Animal->eat()");}
//內部類
class Inner{
}
//抽象方法,只能默認和public修飾
abstract void Sleep();
}
cat類:
public class Cat extends Animal implements interfaceA,interfaceB {
@Override//override重寫
void Sleep() {
}
@Override
public void eat() {
System.out.println("Cat->eat()");
}
@Override
public void showA() {
}
@Override
public void showB() {
}
}
Dog類:
public class Dog extends Animal implements OutPut {
@Override
public void eat() {
System.out.println("Dog->eat");
}
@Override
void Sleep() {
}
@Override
public void showA() {
}
@Override
public void showB() {
}
@Override
public void showDown() {
}
}