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

Java抽象类和接口介绍

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

Java抽象类和接口介绍

目录

1.抽象类

注意事项:

抽象类的作用

2.接口

实现接口:

总结


1.抽象类

在回答这个问题之前,我们先来回忆一下什么是类?

class Animal {
    public void eat() {
       System.out.println("这是一个普通类中的普通方法!");
    }
}

接下来做一些小小的改变,注意看!!

abstract class Animal {
    abstract public void eat();
}

发现了有什么变化吗?我们在类和方法的前面加上了abstract代表这个类或方法是一个抽象类/抽象方法,并且这个方法没有用大括号具体的实现,是因为抽象方法不能执行具体的代码。

概念:抽象类/抽象方法就是从多个事物中将共性抽取出来,所以他们存在的意义就是被继承。抽象类本身不能实例化,想要使用,只能创建抽象类的子类,然后让子类重写抽象类中的抽象方法。

注意事项:

1.抽象类不能实例化

Animal animal = new Animal();

2.抽象方法不能是private的

abstract public class Animal {
    abstract private void eat();
}

3.抽象类中可以包含其他的非抽象方法,也可以包含字段,这个非抽象类方法和其他普通方法规则一样,可以被重写,也可以被子类直接调用

abstract public class Animal {
    abstract public void eat();
    public void func() {
        System.out.println("func()执行了");
    }
}
public class Dog extends Animal{
    public void eat() {
        System.out.println("Dog is eating");
    }
}
public class Test {
    public static void main(String[] args) {
        Animal animal = new Dog();
        animal.func();
    }
}

执行结果: func()执行了

抽象类的作用 使用抽象类的场景就如上面的代码, 实际工作不应该由 父类 完成, 而应由 子类 完成. 那么此时如果不小心误用成 父类 了, 使用普通类编译器是不会报错的. 但是父类是 抽象类 就会在 实例化 的时候提示错误, 让我们尽早发现问题,充分利用编译器的 校验 , 在实际开发中是非常有意义的。

2.接口

接口是抽象类的更进一步,抽象类中还可以包含非抽象类和字段,而接口中包含的方法都是抽象方法,字段只能包含静态常量。

1.使用interface定义一个接口

2.接口中的方法一定是抽象方法,因此可以省略abstract

3.接口中的方法一定是public,因此可以省略public

4.一个类使用implements继承接口,此时表达的含义是“实现”

5.接口不能单独被实例化

public interface IRunning {
    void run();
}
public interface ISwimming {
    void swim();
}
提示:创建接口时一般以大写字母 I 开头,接口一般使用 形容词命名

实现接口:
abstract public class Animal {
    protected String name;
    public Animal(String name) {
        this.name = name;
    }
}
public class Dog extends Animal implements IRunning{
    public Dog(String name) {
        super(name);
    }
    public void run() {
        System.out.println(name+" is running");
    }
}
public class Fish extends Animal implements ISwimming{
    public Fish(String name) {
        super(name);
    }
    public void swim() {
        System.out.println(name+" is swimming");
    }
}
public class Duck extends Animal implements IRunning, ISwimming {
    public Duck(String name) {
        super(name);
    }
    public void run() {
        System.out.println(name+" is running");
    }
    public void swim() {
        System.out.println(name+" is swimming");
    }
}

上面的代码展示了,一个类继承一个父类,同时实现一个或多个接口。

内容为狗属于动物,并且会跑;鱼属于动物,并且会游泳;鸭子属于动物,既会跑又会游泳。

总结

抽象类和接口都是Java中多态的使用方式,核心区别是抽象类可以包含普通方法和普通字段,这样的普通方法和普通字段可以被子类直接使用(不必重写),而接口中不能包含普通方法,子类必须重写所有的抽象方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/601171.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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