【Java编程进阶】Java抽象类与接口详解
创始人
2024-05-09 02:13:22

在这里插入图片描述

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


文章目录

  • 1. 抽象类
  • 2.接口
  • 3. 抽象类和接口对比
  • 4. 总结
  • 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 <接口名>{类型标识符final 符号常量名n = 常数;返回值类型  方法名([参数列表]);…
}

实现接口:

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

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

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

示例:

interface Walk{//...public void walk();
}interface Sing{//...public void sing();
}class Dog implements Walk,Sing{//...@Overridepublic void walk() {System.out.println("小狗在走路...");}@Overridepublic 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编程进阶之路专栏,专栏文章持续更新!

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...