Java中的abstract和interface

抽象类(abstract)

在一个类中,将某个功能给出一个声明,该类称为抽象类.

一个类有抽象方法(没有方法体的方法),那么该类就是抽象类

抽象类和抽象方法的标准格式

权限修饰符 abstract class 类名{}

权限修饰符 abstract 返回值类型 方法名();

//抽象类的格式
public abstract class Demo{
    public void study();//抽象方法,没有方法体的方法
}

class AbstractDemo extends Demo{
    public void study(){
        System.out.println("我是抽象类的子类");
    }
}

//测试类
class Test{
    public static void main(String[] args){
        //Demo d = new Demo //此方式是错的,抽象类不能进行实例化
        Demo d = new AbstractDemo();//抽象多态
        d.study();//编译看左边,运行看右边             
    }
}

抽象类的本质

强制子类必须完成其所有的事情

特点

1)成员变量:既可以定义常量,也可以定义变量

2)成员方法:既可以是抽象方法,也可以是非抽象方法

3)构造方法:对数据进行分层初始化

注意事项

1)若一个类中有抽象方法,那么该类一定是抽象类,抽象类中也可以有非抽象方法

2)抽象类不能直接实例化,可以通过具体的子类进行实例化

        父类名 对象名 = new 子类名();(即抽象多态)

3)抽象的子类

        子类要么是具体类,要么是抽象类

        子类是具体类时可以直接抽象类多态进行实例化

        子类是抽象类,还需要提供更具体的子类,否则都无法进行实例化

接口(interface)

描述一个事物的扩展功能(事务本身不具备的功能),如果有事物想使用这个扩展功能,必须将该接口的功能进行实现

接口和子实现类的标准格式:

interface 类名{}

class 类名 implements 接口名{}

//接口
interface Demo{
    public abstract void show();//接口的方法也只能是抽象方法
}
//接口的子实现类
class IfDemo implements Demo{
    public void show(){//实现接口的方法
        System.out.println("我是接口的子实现类");
    }
}

//测试类
class Test{
    public static void main(String[] args){
        //Demo d = new Demo();//错误的方式,接口不能直接实例化
        Demo d = new IfDemo();//接口多态
        d.show();//编译看左,运行看右
    }
}

特点

接口的成员变量只能是常量,被static修饰,存在默认修饰符:public static final ...

接口的方法只能是抽象方法,存在默认修饰符:public abstract ...

接口没有构造方法

接口中的方法只能是抽象方法

接口的实现类和接口是一种implements关系

接口的实现类称为"接口的子实现类"

注意事项

接口不能直接实例化,可通过具体的子实现类进行实例化

接口名 对象名 = new 子实现类名();(接口多态)

抽象类和接口的区别

1)成员的区别

        参考抽象类和接口的特点

2)关系的区别

    类与类之间

        继承关系,只支持单继承,不支持多继承,但可以多层继承

    类与接口之间

        实现关系,一个类在继承另一个类的同时可以实现多个接口

        格式:class 类1 extends 类2 implements 接口1,接口2{}

    接口与接口之间

        继承关系,可以单继承,也可以多继承

3)设计理念的区别

        抽象类体现的是一种"is a "的关系

        接口体现的是一种"like a " 的关系

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值