抽象类和接口的区别

抽象类和接口都是用来规范一个类里面需要实现哪些方法

抽象类里面的抽象方法,只有方法名,没有方法体,继承抽象类的类必须重写这个抽象类的所有抽象方法

接口里面也只有抽象方法,实现这个接口的类需要重写这些抽象方法

由于java里面是单继承,所以1个类最多继承1个类,但是1个类可以实现多个接口,所以实现接口这种方式更常用

 抽象类:

abstract class Person 
{
    public abstract void run();
    public abstract String getName();
}

方法:

interface Person 
{
    void run();
    String getName();
}

1.抽象方法

正常来说是这样的:

class   Person
{
    public void run()
    {

    }
}

类里面的方法必须有方法体,不加方法体(即直接public void run();如下图)是会报错的

将这个方法设为抽象方法就可以不需要方法体:

2.抽象类:

 当一个类中含有一个抽象方法的时候,必须将这个类也声名为抽象类

如果你把一个类定义为了抽象类,就会强迫它的子类重写抽象类里面的抽象方法,因此抽象方法相当于定义了一种规范

抽象类中可以有非抽象方法

例如:Person类这个抽象类中定义了抽象方法run(),那么,在子类Student中,就必须重写run()方法

abstract class Person
{
    public abstract void run();
}

class Student extends Person 
{
    @Override
    public void run() 
    {
        System.out.println("Student.run");
    }
}

3.接口 

接口就是用来规范一个类的,规定一个类中必须包含哪些函数(也就是哪些方法)

因为一个类实现某个接口的时候,需要重写这个接口中所有的方法

(1)抽象类可以修改为接口:

abstract class Person 
{
    public abstract void run();
    public abstract String getName();
}

 将这个抽象类修改为接口:

interface Person 
{
    void run();
    String getName();
}

(2)接口是比抽象类还要抽象,因为抽象类中还可以有属性,但是接口中连属性都没有

(3)接口中所有的方法默认都是public abstract(),所以这两个修饰符不需要写出来(写不写效果都一样)

(4)一个类实现某个接口的时候,需要重写这个接口中所有的方法:

但是一个类继承某个抽象类的时候,只需要重写这个抽象类中的所有抽象方法,非抽象方法不需要重写

class Student implements Person 
{
    private String name;

    public Student(String name) 
    {
        this.name = name;
    }

    @Override
    public void run() 
    {
        System.out.println(this.name + " run");
    }

    @Override
    public String getName() 
    {
        return this.name;
    }
}

(5)一个类只能继承一个类,不能多继承,继承多个类,但是一个类可以实现多个接口

(6)一个interface可以继承自另一个interface,相当于扩展了接口的方法:

interface Hello 
{
    void hello();
}

interface Person extends Hello 
{
    void run();
    String getName();
}

Person接口继承自Hello接口,因此,Person接口现在实际上有3个抽象方法 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值