【Java】抽象类和接口

【Java】抽象类和接口

一、抽象类

抽象类是对于一组有相同特征事物的抽象总和。
比如:猫、狗、鸟都是动物;人、机器人、猫、狗都会跑。在这其中,“动物”和“跑”都可以抽象为抽象类。

抽象类的特性

1)抽象类中可以有普通成员(成员变量+成员方法)
2)抽象类不可以被实例化
3)抽象类中的构造方法不是为了实例化父类时候用(也不能被实例化),而是为了子类继承父类这个抽象类的时候能够初始化父类的成员(抽象类存在的意义就在于被继承)
4)抽象类中可以有抽象方法(也可以没有),但是有抽象方法一定是抽象类。(抽象方法不能有函数体,他存在的意义就是被重写,然后触发动态绑定)
5)抽象类中普通成员方法可以不被重写,子类调用的时候用了父类的实现,如果重写了那就调用子类中的实现。
6)抽象类中抽象方法必须被所继承的子类重写,否则编译不通过。
7)final和abstract不能同时出现,final修饰后不能被重写

二、接口

接口是更抽象的抽象类,也是一种引用类型,定义格式也基本和类相同,生成的文件也是.class文件,但不是类
定义一个ITest接口:

public interface ITest {
    /*public abstract void fun1();
    public void fun2();
    abstract void fun3();*/
    // 接口中可以不写访问修饰符
    void fun4();
}

接口的特性

1)成员变量和方法默认是public static final 类型和 public abstract 类型
2)不能有普通成员
3)接口不能实例化
4)接口可以向上转型和动态绑定
5)接口不能单独运行,必须被子类实现(implements)
6)接口的出现是为了解决Java不能多继承的问题
7)接口本身就是抽象的(更抽象的抽象类)
8)子类重写的方法访问限定权限是需要大于等于父类的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值