JAVA继承、接口
接口1
public interface IAction1 {
void run();
}
接口2
public interface IAction2 {
void run();
}
Animal
public class Animal {
String name; //属性
int age; //属性
// 默认构造函数
public Animal() {}
// 带参构造函数
public Animal(String name, int age) {
this.name = name;
this.age = age;}
// 重写父类toString
@Override
public String toString() {
return "Animal("+"name="+name+'\''+",age="+age+')'; }
// 重写父类equls
@Override
public boolean equals(Object obj) {
return super.equals(obj);}
// 快速生成的接口
public String getName() {
return name; }
public void setName(String name) {
this.name = name; }
public int getAge() {
return age;}
public void setAge(int age) {
this.age = age; }
}
Dog
// 继承Animal(关键字extends)
// 接口IAction1(关键字 implements)
public class Dog extends Animal implements IAction1 {
// 带参构造函数,调用父类带参构造(调用父类关键字super)
public Dog(String name, int age) {
super(name, age);}
@Override
public String getName() {
return "dog"; }
@Override
public void run() {
System.out.println("IAction1.run"); }
// 增加接口2
public void addAction(IAction2 iAction2)
{iAction2.run();}}
MAIN
public class Main{
public static void main(String[] args) {
// 实例
Dog dog = new Dog("秋田犬",1);
// 使用内部类对象
//dog.addAction(new MyClass());
// 这种语法做了三件事: new IAction2(){....}
// 1. 创建一个匿名类
// 2. 实现了IAction2接口
// 3. 返回一个匿名类对象
dog.addAction(new IAction2() {
@Override
public void run() {
System.out.println("IAction2 run"); }
});
dog.run();
}
}