抽象

abstract

抽象方法:使用abstract关键字修饰,无方法体(大括号{}),有声明。父类的抽象方法子类必须实现。

意义:为子类提供统一规范的模板,子类必须实现。

特点

抽象方法格式:public abstract void name();

使用abstract关键字修饰。

抽象类不一定有抽象方法,有抽象方法必定是抽象类。

抽象类和其构造方法不能实例化,只能通过子类来实现。

子类必须是抽象类或者具体类重写抽象类中的所有抽象方法。

抽象类以及继承它的子类权限修饰符只能是default。

如:Father f = new Son();

注意:abstract不能和final private static关键字共存。

abstract只能修饰类与成员方法。

代码:

package com.itcode.demo;  

/**      
 * @author: 成都码到功成学员  
 * @description:  
 * 抽象abstract 
 */  
// 抽象类  
abstract class FatherAbs{  
    // 抽象方法 无方法体。  
    public abstract void ma();  
}  
class SonAbs extends FatherAbs{  

    // 必须被重写  
    @Override  
    public void ma() {  
        // TODO Auto-generated method stub  
        System.out.println("子类");  
    }  

}  
public class TestAbstract {  

    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
//      FatherAbs abs = new FatherAbs();//不能实例化  
        FatherAbs abs = new SonAbs();  
        abs.ma();  
    }  
}

接口

含义:对外提供规则,用interface修饰的类。就是必须遵守的规范。

作用:实现规范与抽象的分离。

接口特点

接口用关键字interface表示

类实现接口用implements表示

其重写的方法修饰符必须是public。

接口不能实例化,只能按照多态的方式来实例化

接口的子类:抽象象类【意义不大】、具体类要重写接口中的所有抽象方法。(推荐方案)

类与类间只能是单继承,而接口和接口间可以是单/多继承。

JDK1.8后支持静态方法。

示例:

效果:

接口与抽象的区别

名称

接口

抽象

属性

常量【默认修饰符public static final】

常量、变量

构造方法

成员方法

抽象方法【默认修饰符public abstract】、静态方法【JDK1.8】

抽象方法、普通方法

设计理念

扩展性,体现了“like it”

共性,体现了“is it”

类与接口相互关系:

  • 类与类:继承,单继承 多层继承。

  • 类与接口:实现,单实现,多实现。

  • 接口与接口:继承,单继承,多继承。

关于接口多继承的代码:

Last updated

Was this helpful?