* 接口和抽象类的区别
* (1)抽象类可以有构造方法,接口中不能有构造方法
* (2)抽象类中可以有普通成员变量,接口中没有普通成员变量
* (3)抽象类中包含静态方法,接口中不能包含静态方法
* (4)一个类可以实现多个接口,但只能继承一个抽象类
* (5)接口可以被多重实现,抽象类只能被单一继承
*
* 接口与抽象类的相同点
* (1)都可以被继承
* (2)都不能被实例化
* (3)都可以包含方法声明
* (4)派生类必须实现未实现的方法
package cn.sg.jiekou;
public interface Flyable {
//1.接口不能定义属性和构造方法
//2.接口不能够实例化
//3.接口不能定义静态方法
//4.借口不能定义普通方法
public void fly();
}
package cn.sg.jiekou;
public interface Eatable {
public void eat();
}
package cn.sg.jiekou;
//子类如果implement了接口,必须强行要求实现接口内定义的方法
//接口可以被多重实现
public class Pigeon extends Animal implements Flyable,Eatable {
public void fly() {
System.out.println("能飞的鸽子");
}
public void eat() {
System.out.println("吃鸽子");
}
}
package cn.sg.jiekou;
public class Chicken implements Flyable,Eatable{
public void fly(){
System.out.println("飞鸡");
}
public void eat() {
System.out.println("吃鸡");
}
}
package cn.sg.jiekou;
public class Animal {
String name;
int age;
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;
}
public void show() {
System.out.println("show Animal");
}
}
package cn.sg.jiekou;
/**
* 接口和抽象类的区别
* (1)抽象类可以有构造方法,接口中不能有构造方法
* (2)抽象类中可以有普通成员变量,接口中没有普通成员变量
* (3)抽象类中包含静态方法,接口中不能包含静态方法
* (4)一个类可以实现多个接口,但只能继承一个抽象类
* (5)接口可以被多重实现,抽象类只能被单一继承
*
* 接口与抽象类的相同点
* (1)都可以被继承
* (2)都不能被实例化
* (3)都可以包含方法声明
* (4)派生类必须实现未实现的方法
*
* 问题:声明时候使用抽象类和接口
* 接口和抽象类的使用场景
*
* @author Administrator
*
*/
public class Main {
public static void main(String[] args) {
//出错:接口不能够实例化
//Flyable flyable = new Flyable();
Pigeon pigeon = new Pigeon();
pigeon.fly();
pigeon.eat();
pigeon.setName("小鸽子");
pigeon.setAge(2);
System.out.println("名字:"+pigeon.getName()+"\t年龄:"+pigeon.getAge());
System.out.println("--------------------------------");
pigeon.show();
Chicken chicken = new Chicken();
chicken.fly();
chicken.eat();
}
}
运行结果: