标签:Java 接口 class 面向对象 抽象 抽象类 方法 public
Java面向对象(四)
1.抽象类
概括:抽象类中可以有一些方法但又无须提供它的实现,通过子类实现抽象类中的抽象方法。
举例:
abstract class Animal3{
public abstract void shout();
}
class Dog3 extends Animal3{
public void shout(){
System.out.println("汪汪");
}
}
public class Page117 {
public static void main(String[] args) {
Dog3 dog=new Dog3();
dog.shout();
}
}
注意:
- 一个类中包含抽象方法那么它一定是抽象类
- 抽象类中可以不包含抽象方法
- 抽象类不可以被实例化
- 抽象方法没有方法体,不可以被调用,需要在子类中实现抽象方法
2.接口
概括:接口是特殊的抽象类,它不能包含普通方法,内部所有方法都是抽象方法。JDK8中对接口进行了重新定义,接口中除抽象方法外还可以有默认方法和静态方法(也叫类方法),分别用default和static修饰,且两种方法都允许有方法体。与定义类不同的是,定义接口不再使用class关键字,而是使用interface关键字。
语法:
[修饰符] interface 接口名 [extends 父接口1,父接口2,...]{
[public] [static] [final] 常量类型 常量名=常量值;
[public] [abstract] 方法返回值类型 方法名([参数列表]);
[public] default 方法返回值类型 方法名([参数列表]){
//默认方法方法体
}
[public] default 方法返回值类型 方法名([参数列表]){
//静态方法方法体
}
}
注意:
- 定义常量时必须进行初始化赋值
- 接口可以同时继承多个父接口
- 定义常量时可省略public static final,接口会默认添加,同理定义抽象方法可以省略public abstract,定义默认方法和静态方法可省略public
静态方法可以通过接口名.方法名调用,而抽象方法和默认方法只能通过接口实现类的实例对象来调用,接口的实现类必须实现接口中的所有抽象方法,通过implements关键字来实现接口,一个类可以在继承另一个类的同时实现多个接口
语法:
[修饰符] class 类名 [extends 父类名] [implements 接口1,接口2,...]{
}
举例:
interface Animal4{
int ID=1; //全局常量
void breathe(); //抽象方法
default void getType(String type){
System.out.println("该动物属于"+type);
}
static int getID(){
return Animal4.ID;
}
}
class Dog4 implements Animal4{
public void breathe(){
System.out.println("狗在呼吸");
}
}
public class Page118 {
public static void main(String[] args) {
System.out.println(Animal4.getID());
Dog4 dog=new Dog4();
System.out.println(dog.ID);
dog.breathe();
dog.getType("犬类");
}
}
注意:
- 这种情况也是ok的,接口2继承(extend)接口1,类实现(implements)接口2
- 一个类实现接口时,如果它是抽象类,那么只需要实现接口中部分抽象方法即可,否则要实现全部抽象方法
- 一个类可以通过implements同时实现多个接口,
- 一个接口可以通过extends同时继承多个接口
- 一个类继承一个类的同时还可以实现接口,class A extends B implements C{} //先继承再实现
标签:Java,接口,class,面向对象,抽象,抽象类,方法,public 来源: https://www.cnblogs.com/LoginX/p/Login_X17.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。