【Java编程进阶】Java抽象类与接口详解

导读:本篇文章讲解 【Java编程进阶】Java抽象类与接口详解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

在这里插入图片描述

推荐学习专栏:Java 编程进阶之路【从入门到精通】,从入门到就业精通,买不了吃亏,买不了上当!!


1. 抽象类

前面说到,Java 编程以对象为单位,我们把具有相同属性和行为的事物抽象成一个类,这个类的实例化叫做对象,那么什么是抽象类呢?

在这里插入图片描述

抽象类往往用来表示设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

比如前面我们把动物抽象为一个类,但是现实中并没有一个事物叫动物,它只是一类事物的总称,并不是一个实体,这种情况下我们把它定义为抽象类。

语法格式:

修饰符 abstract class 类名(){
    //……
   abstract 方法名();
}

abstract 修饰符修饰类时,这个类就是抽象类,修饰方法时,这个方法就是抽象方法。

需要注意的是,含有抽象方法的类一定是抽象类,抽象类不能实例化对象,且必须被继承,抽象方法只需声明不用实现且一定要在子类中重写,否则子类仍为抽象类。

在这里插入图片描述

由于抽象方法一定要被继承,所以 abstract 不能与 final 同时修饰一个类。抽象方法必须被重写,所以 abstract 不能与 private,static,final 并列修饰同一方法。

示例:

abstract class Animal {
    public abstract void walk();
    //...
}

class Cat extends Animal {
    //...
    public void walk(){
        System.out.println("小猫在走路...");
    }
}

public class Test {
    public static void main(String[] args) {
        Cat cat=new Cat();
        cat.walk();
    }
}

2.接口

Java 接口是一些方法声明的集合,一个接口只有方法的声明没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。

Java 接口用来实现多态,一个类可以实现多个接口,解决了单继承的问题。

定义接口:

[访问控制符] interface 接口名{
     [类型标识符] [static] [final] 变量名 = 常数;
     返回值类型  方法名([参数列表]);}

实现接口:

[访问控制符] class 类名 [implements <interface>[,<interface>]*],]
 {
   //类体,必须实现接口中的方法
 }

我们可以把接口看做特殊的抽象类,在这个抽象类中只能定义抽象方法和常量。接口有以下的特点:

  • 接口里的成员属性全部是以 public(公开)、static(静态)、final(最终) 修饰符修饰
  • 接口里的成员方法全部是以 public(公开)、abstract(抽象) 修饰符修饰
  • 接口里不能包含普通方法
  • 子类继承接口必须实现接口里的所有成员方法,除非子类也是抽象类

示例:

interface Walk{
    //...
    public void walk();
}

interface Sing{
    //...
    public void sing();
}

class Dog implements Walk,Sing{
    //...

    @Override
    public void walk() {
        System.out.println("小狗在走路...");
    }

    @Override
    public void sing() {
        System.out.println("小狗在唱歌...");
    }
}

public class Test {
    public static void main(String[] args) {
        Dog dog=new Dog();
        dog.walk();
        dog.sing();
    }
}

3. 抽象类和接口对比

上面说到可以把接口看做一个只有抽象方法和常量的抽象类,那么抽象类和接口有什么不同呢?

类和抽象类代表一类实体,类可以被实例化,而抽象类不可以实例化,接口并不能代表一类实体,只能代表功能或者属性。在应用时,已经很具体没有再抽象的必要使用单继承,而我们把独特的需要独立出来的功能或者属性封装在接口中。

4. 总结

这篇文章浅谈了抽象类和接口的实现以及两者的共同点和不同之处,关于Java面向对象基础教程系列就这么多内容,下一篇文章再谈一谈 Object 类,Java中 Object 是所有类的祖先,其重要性不言而喻!


Java基础教程系列文章

【Java编程进阶】花费数小时,带你学透Java数组,这些常用方法你还记得吗?

【Java编程进阶】面向对象思想初识

【Java编程进阶】封装继承多态详解

在这里插入图片描述

欢迎订阅学习Java编程进阶之路专栏专栏文章持续更新!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82712.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!