JAVA 抽象类和接口

举报
啊Q老师 发表于 2022/04/12 18:34:03 2022/04/12
【摘要】 本文章介绍JAVA 抽象类和接口

抽象类:定义一个类的目的,不是为了创建自身对象,而是为了提供一个公共的接口,那么可以把相应的成员函数定义为抽象函数。

//显然,在Animal类中bark()方法无法具体实现,而在子类中继承了bark()方法并具体地重写了该方法去实现。
//即父类中的bark()方法去实现是没有任何意义的,该方法只能在子类根据具体情况去实现。

public class Animal {
    public void bark() {} }

上面的语法和用法是允许这样,但一般这种情况还是把它抽象成abstract方法。

// 这种情况可以将父类声明为抽象类。抽象类需要用abstract修饰符修饰
public abstract class Animal {
    public abstract void bark() ; //抽象方法没有方法体,因为本身为不能实现的方法。
    
    public void say(){
        System.out.println("抽象类中的普通方法!");
    }  }

1.抽象类不能创建对象,即不能实例化,new Animal()(X)。
2.抽象类中包含抽象方法和普通的成员方法和成员变量。但不同的是:抽象类中的抽象方法只能用public或protected修饰。因为抽象类的目的是让其子类继承重写。
3.若一个类继承了一个抽象类,那么子类必须实现父类的抽象方法。否则,子类继承的方法还是  抽象方法,子类也是抽象类了,要用abstract修饰。

public class Bird extends Animal {
    public void bark() {
        System.out.println("叽叽喳喳~~"); //具体的方法实现
    } }

接口(Interface)——抽象类型,是抽象方法的集合。接口通常以Interface来声明,一个类通过继承接口的方式,从而继承接口的抽象方法。

1.类是描述对象的属性和方法,而接口则包含类要实现的方法。
2.实现接口的类是抽象类,否则该类要定义接口中的所有方法。
3.接口所有的方法中都是抽象方法,不能被实例化,但可以被实现。

public interface USB {
    public void install();  //已默认为抽象方法,可以不写abstract修饰符.
    public void work();
}

接口继承形式: class ClassName implements Interface 1,Interface 2,[…]{} ,可以多重继承。

 //必须实现接口所有抽象的方法,或者成为抽象类
public class Phone implements USB {

    public void install() {
        System.out.println("为手机安装USB驱动!");
    }

    public void work() {
        System.out.println("通过USB接口,来给手机传递数据!");
    } }

public  class Print implements USB {
    public void install() {
        System.out.println("为打印机安装USB驱动!");
    }

    public void work() {
        System.out.println("打印机可以通过USB接口来打印文档!");
    } }

public class Computer {    
    public void plugin(USB usb) {
        usb.install();
        usb.work();

//表面上调用的是接口里的抽象方法,实际上调用的是“子类”实现的具体的方法。
    } }
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。