Java中抽象类与接口有什么区别呢?

戚薇 Java经验 发布时间:2023-06-20 22:56:48 阅读数:2525 1
下文笔者讲述java中抽象类和接口的区别说明,如下所示

抽象类和接口的简介

抽象类:
   是一种不能被实例化的类
   其中可以包含未实现的方法和已实现的方法
   抽象类必须用abstract关键字修饰

接口:
   是一种只能包含全局静态常量和全局抽象方法的类型
    其中所有的方法必须是公共的且未实现

抽象类和接口的用途

抽象类:
  作为一种中间层的角色
   被用来声明标准化方法以
      及声明需要由其子类实现的方法。

接口:
  被用来定义可以被不同类实现的规范

抽象类和接口关于继承的区别

一个类只能继承一个抽象类,但可同时实现多个接口

接口可以被接口继承,且一个类也可以同时实现多个接口

抽象类和构造器关于构造器的区别

抽象类可包含有参构造器
   但是不能被实例化
    它们的构造器仅被子类调用
     并且必须是子类中的第一个语句。

接口不能包含构造器
    因为它们不能被实例化

抽象类和接口区别之变量

抽象类:
  变量可以是使用关键字final和static定义的变量
   或普通实例变量

接口:
  变量必须是公共(public)、静态(static)和常量(final)
   且必须在声明时进行初始化 

抽象类和接口区别之访问修饰符

抽象类的方法:
  可是包(default)、抽象(abstract)、受保护(protected)和公共(public)
  且也可以包含静态(static)和最终(final)方法

接口的方法:
  必须是公共(public)
   且不能有任何实现

抽象类和接口的代码示例

//抽象类
public abstract class Animal{
    protected String name;
    public Animal(String name){
        this.name = name;
    }
    public abstract void eat();
    public void move(){
        System.out.println(name + " is moving");
    }
}

//子类
public class Dog extends Animal{
    public Dog(String name){
        super(name);
    }
    public void eat(){
        System.out.println(name + " is eating");
    }
}

//接口
public interface Animal{
    public static final String NAME = "Animal";
    public abstract void eat();
    public void move();
}

//实现类
public class Dog implements Animal{
    private String name;
    public Dog(String name){
        this.name = name;
    }
    public void eat(){
        System.out.println(name + " is eating");
    }
    public void move(){
        System.out.println(name + " is moving");
    }
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202306/16872730416851.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者