栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java的抽象类、抽象方法以及接口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java的抽象类、抽象方法以及接口

1. 抽象类、抽象方法

普通类里面含有构造方法、普通方法、static方法、常量和变量等内容,可以被其他类继承并且实例化,但是当有的子类要继承父类一些内容时不要求父类的方法做出具体的细化内容,只需要提供一个方法供子类继承,此时就不需要方法体,这种方法叫做抽象方法,用关键字abstract修饰,而这个类也不需要实现具体的细化内容,故也不需要被实例化,即抽象类也用关键字abstract修饰。

范例:

创建抽象类、抽象方法:
public abstract class Shape {
    public  abstract void draw();//抽象方法不需要方法体
    public void printf(){
        System.out.println("***普通方法***");
    }
}
抽象类:
  • 使用关键字abstract修饰即为抽象类
  • 如果尝试创建抽象类的实例,就会编译报错
  • 抽象类除了不能被实例化以外,其他语法都和普通类一样
  • 抽象类中也可以有普通属性与方法
  • 子类继承时普通方法可以选择性重写,而抽象方法强制重写
  • 抽象类可以继承自其他类也可以被其他类继承
  • 抽象类不能被final关键字修饰,因为修饰后禁止继承而抽象类必须被继承
抽象方法:
  • 抽象方法不需要方法体
  • 抽象方法只能存在于抽象类中(也可以存在于接口内),不能在普通类中存在
  • 抽象方法不能被关键字private修饰,这样就无法被子类重写,而抽象方法存在的意义就是为了让子类进行重写

抽象类不能被实例化,若实例化就会编译报错:

 2. 接口

接口是抽象类的更进一步,由于Java的基础是单继承,可通过继承一个类,实现多个接口的方式完成多继承的效果,关键字为interface。

范例:

创建一个接口:
public interface Shape{
    //看似是一个普通的属性,其实是public static final 修饰的常量
    int num = 0;
    //虽然没有写public和abstract,但也表示的是一个抽象的公有方法
    void draw();
}
Rect类实现接口Shape:
public class Rect implements Shape {
    @Override
    public void draw() {
        System.out.println("□");
    }
}
  • 接口不能被实例化(抽象类的更进一步),也不具有各种类的特性;
  • 接口中可以写抽象方法(不必写abstract);
  • 接口中不能写普通方法/属性,只能写由public static final 修饰的属性;
  • 接口不能继承自其他的类但可以继承自其他接口;
  • 接口不能被其他类继承而是被其他类“实现”(implements关键字);
  • 接口与接口之间可以继承(extends);
  • 一个类只能继承自一个抽象类但能够实现多个接口(多个接口就可以实现类似于多继承的效果,由于接口内不存在普通实例属性,故不会出现各种多继承的问题);
  • 实现多个接口之间使用“,”隔开;
  • 接口命名一般为“I"为前缀,以形容词命名,表具有xxx特性;
  • 接口相当于一种约束,要求实现了该接口的类必须重写所有的接口中的抽象方法。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390413.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号