Java学习笔记----抽象类和接口

什么是抽象类?

抽象类,是普通类和接口之间的中庸之道---------Java编程思想
定义:包含抽象方法的类就是抽象类
作用:抽象类可以使类的抽象性明确起来,并告诉用户和编译器打算怎样来使用他们。
使用:比如狗类、猪类、猫类这三个类,具有一些共性,都可以吃和跑,那么我们可以将这一共性写入抽象类中,如下:

public abstract class animal {
    public abstract void eat();
    public abstract void run();
}

注意: 1 抽象类的限定词只能为public 或者protected,否则无法被继承,会出错
2 类中有抽象方法使,类也要写为abstract类
3 抽象方法只有方法体,没有实现
具体猫这个类,实现动物这个抽象类,重写其中的抽象方法:

public abstract class animal {
    public abstract void eat();
    public abstract void run();
}
class Cat extends  animal{
    @Override
    public void eat() {
        System.out.println("吃饭");
    }

    @Override
    public void run() {
        System.out.println("奔跑");
    }
}

abstrcat关键字允许在类中创建一个或多个没有任何定义的方法,但没有提供任何具体的实现,这些实现是由类的继承者来创建的

什么是接口?

Interface使得抽象的概念更向前迈进了一步------Java编程思想
定义:接口,产生一个完全抽象的类,她允许创建者确定方法名,参数列表和返回类型,但是没有方法体,接口只提供了形式。
作用:接口用来建立类与类之间的协议。所有实现了特定接口的类,看起来应该都是这样。
使用
定义接口

interface animal{
    void eat();
    void run();
}

接口的方法默认是public

实现接口:

class Dog implements  animal1{
    @Override
    public void eat() {
        System.out.println("狗吃饭");
    }

    @Override
    public void run() {
        System.out.println("狗奔跑");
    }
}

接口和抽象类的区别

  1. 抽象类用abstract关键字,接口用interface关键字
  2. 抽象类的子类用extends关键字继承,接口用implement实现
  3. 抽象类可以包含非抽象方法,接口只能包含抽象方法
    (jdk1.8中,接口可以有static方法和default方法,即接口中可以有具体的实现)
  4. 类只能继承一个抽象类,类可以实现多个接口,接口相当于实现了java的多重继承
  5. 抽象类中的方法可以是public和protected,而接口中的方法只能是public
  6. 接口更多的是在系统架构上发挥作用,主要用于定义模块之间的通信契约。而抽象类,在代码实现方面发挥作用,可以实现代码的复用。
  7. 总的来说,接口是对抽象类的一种抽象

面试题:如果new一个抽象类会怎么样?

抽象类只能被子类化,不能被实例化。
如果这个抽象类有子类,那么子类会override抽象类的抽象方法,那么通过new这个抽象类来生成一个实例,实际上生成的是这个子类的实例对象。
如果抽象类没有子类,就是抽象方法没有被实现,那么new这个抽象类会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值