概述
在Java语言中,都是用来对抽象类定义的方法。从关键字,各自区别着手
抽象类(abstract class)
关键字:abstract;
- 抽象类定义用abstract关键字修饰
- 不能被实例化,子类继承父类后必须重写父类的抽象方法;
- 有抽象方法的类一定是抽象类,但是抽象类不一定含有抽象方法。
public abstract class dog {
/**
* 抽象类有构造函数,而接口没有
/
public dog() {
super();
}
/*
* 抽象方法,必须在子类中实现
* @return
/
abstract public String getName();
/*
* 普通变量
/
String name;
/*
* 普通方法
*/
public void getSex(){
}
}
接口(interface)
关键字:interface;比abstract class更加抽象特殊的抽象类;
- 接口中所有方法都是抽象的(可以用abstract修饰,也可以不用)
- 接口中的修饰符必须是public(默认为不写,其实也是public)
- 接口中的属性必须是静态全局常量,public static final修饰;
- 接口不能被实例化
- 子类实现接口,需要实现接口中所有的方法
public interface cat {
/**
* 抽象方法,默认是public,可写也可不写,但是子类必须实现此方法
* @return
*/
int getAge();
/**
* 写上默认的修饰符,,子类必须实现此方法
* @return
*/
public int getNum();
/**
* 静态不可变变量,相关修饰隐藏
*/
int age = 1;
/**
* 将修饰显示出来,默认是公开静态不可变常量
*/
public static final int num =1;
}
异:
抽象类有构造函数(用于初始化信息),有静态方法,普通变量,普通方法
接口中都没有这些
同:都有静态常量(接口中默认且只能是public static final),都不能创建实例