抽象

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表示

interface 接口名 {}

类实现接口用implements表示

class 类名 implements 接口名 {}

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

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

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

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

JDK1.8后支持静态方法。

示例:

package com.itcode.demo;  

/**      
 * @author: 成都码到功成学员  
 * @description:  
 * 接口 
 */  
interface FaceTest{  
    //常量  
    int AGE=100;  
    // 方法  
    public abstract void sleep();  
    // 静态方法  
    public static void aa() {  
        System.out.println("接口静态方法");  
    }  
}  
public class TestInterface implements FaceTest{  

    public static void main(String[] args) {  
        System.out.println(FaceTest.AGE);  
        FaceTest.aa();  
        FaceTest aa = new TestInterface();  
        aa.sleep();  
    }  

    @Override  
    public void sleep() {  
        // TODO Auto-generated method stub  
        System.out.println("sleep!");  
    }  

}

效果:

接口与抽象的区别

名称

接口

抽象

属性

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

常量、变量

构造方法

成员方法

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

抽象方法、普通方法

设计理念

扩展性,体现了“like it”

共性,体现了“is it”

类与接口相互关系:

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

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

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

关于接口多继承的代码:

interface AA{  
    void aa();  
}  
interface AB{  
    void ab();  
}  
interface AC {  
    void ac();  
}  
class Tac implements AA,AB,AC{  
    @Override  
    public void ab() {}  
    @Override  
    public void aa() {}  
    @Override  
    public void ac() {}  

}

Last updated

Was this helpful?