抽象类:
Java中可以定义没有方法体的方法,该方法由其子类来具体实现。
该没有方法体的方法我们称为抽象方法,含抽象方法的类我们称为抽象类。
特点:
- 定义中含抽象方法的类我们称为抽象类;
- 抽象类用abstract来修饰;
- 抽象类代表一种抽象的对象类型;
- 抽象类不能实例化;
- 抽象类中可以有具体的方法,可以没有抽象方法;
/********抽象类*******/
public abstract class A{
public void A(){
}
public abstract void B(){
}
}
/*********含抽象方法的抽象类*******/
public abstract class B{
public void A(){
}
}
/*********含抽象方法的抽象类*******/
public abstract class A{
public abstract void B(){
}
}
抽象方法:
特点:
- 只有方法头没有方法体的方法我们称为抽象方法;
- 抽象方法用abstract来修饰;
- 抽象方法代表一种不确定的操作或行为;
接口(interfance):
特点:
- 接口只能存放静态常量和抽象方法;
- Java接口是对功能的拓展;
- 通过实现接口,Java类可以实现多实现;
- 一个类可以同时继承(extends)一个父类,并且实现(implements)多个接口
- 接口与接口之间可以通过使用extends来产生继承关系;
public class InterfanceDemo{
Public static void main(String []args){
Person p = new Person();
Child child =new Child ();
Dog dog=new Dog ();
p.feed(child);
p.feed(dog);
}
}
class Person{
public void feed(Child child ){
child.eat();
}
public void feed(Dog dog){
dog.eat();
}
}
class Child{
public void eat(){
System.out.printf("吃米饭");
}
}
class Dog{
public void eat(){
System.out.printf("吃骨头");
}
}
/*
*与上面代码对比
*/
public class InterfanceDemo{
Public static void main(String []args){
Person p = new Person();
Child child =new Child ();
Dog dog=new Dog ();
p.feed(child);
p.feed(dog);
}
}
class Person{
//接口的变量可以引用其实现类的对象
//接口实现了多态
public void feed(IAbility ability){
ability.eat(); //动态绑定
}
}
class Child implements IAbility{
public void eat(){
System.out.printf("吃米饭");
}
}
class Dog implements IAbility{
public void eat(){
System.out.printf("吃骨头");
}
}
interfance IAbility{
//接口中只能放公有的静态常量和抽象方法。public static fianl 可以省略
void eat();
}