四大类之《普通类、接口类、抽象类、枚举类》

编程入门 行业动态 更新时间:2024-10-13 10:27:26

四大类之《普通类、<a href=https://www.elefans.com/category/jswz/34/1771365.html style=接口类、抽象类、枚举类》"/>

四大类之《普通类、接口类、抽象类、枚举类》

普通类

我们最常创建的class文件就是普通类。它可以包含成员变量、类变量(static关键字修饰)、成员方法、类方法等等。它可以实例化,实例化后可以调用自己类中的属性和方法。并且它支持继承,使子类拥有父类中的属性和方法【注:拥有不代表能访问,如子类不能访问父类中private修饰的属性和方法,只能通过反射来获取】

public class ClassDemo01 {public static void main(String[] args) {ClassDemo01 classDemo01 = new ClassDemo01("class01");System.out.println(classDemo01);}// 实例变量[每个对象都有一份]private String name;// 类变量[类中所有对象共有一份]private static String className;// 构造器public ClassDemo01(String name) {this.name = name;}// 成员方法public void classTest01() {System.out.println("hello instance");}// 类方法【静态方法】public static void classTest02() {System.out.println("hello class");}// ...}

 com.shuttle.day02.ClassDemo01@1218025c

接口类

接口类相较于普通类来说,它里面没有实例变量,且所有变量都被public static final 修饰【也就是常量】,它不能实例化【new 对象】但可以接口间多继承和被其它类实现,通常使用其实现类来实例化对象。JDK1.8之前接口类中所有方法都不能有方法体,之后可以允许有静态方法和默认方法。

// 接口类
public interface InterfaceDemo01 {// 实际上是 public static final int num = 1;int num = 1;void test01();// JDK1.8之后新增static void test02() {// ...}// JDK1.8之后新增default void test03() {// ...}}// 接口实现类
public class InterfaceDemo01Impl implements InterfaceDemo01 {@Overridepublic void test01() {// ...}@Overridepublic void test03() {// ...}}

抽象类

抽象类相较于普通类来说,它被abstract关键字修饰且不能被实例化。其中的方法可以为抽象方法【同样被abstract关键字修饰】也可以为普通方法。当子类继承抽象类时必须重写其中所有抽象方法【也可以同样声明为抽象方法交由子类的子类去实现...】

public abstract class AbstractClassDemo01 {// 实例变量private String name;// 类变量private static String className;// 抽象方法abstract String test01();// 静态方法static String test02() {return "hello abstractClass";}// 普通方法public void test03() {// ...}}

普通类、接口类、抽象类三者的区别

  • 普通类可以实例化、接口和抽象类都不能被实例化。接口如果需要实例化需指向其实现了接口所有方法的实现类,抽象类如需实例化需指向实现其所有抽象方法的子类对象。
  • 普通类和抽象类仅支持继承【extends】,但接口类不但支持多继承且支持实现【implements】。
  • 普通类和抽象类可以做方法的声明,同时也可以做方法的实现。而接口类只能做方法的声明【JDK1.8后支持默认方法】
  • 普通类和抽象类中不仅可以定义普通变量,还可以定义静态常量。而接口类仅支持静态常量。

什么时候用抽象类和接口?

  • 当类中需拥有一些默认实现的方法且公用,那选择抽象类。
  • 如果需要拥有多继承的特性,那么需要使用接口,因为Java暂不支持多继承,仅支持多实现。
  • 接口从明面上看属于一种更高级的抽象,实现接口必须重写其中所有的方法,而继承抽象类不需要重写其中所有的抽象方法。故当功能不确定时推荐使用抽象类,因为当你改动接口时,所有实现类都得增加其实现方法,牵一发而动全身。

枚举类

其实枚举类放在这并不合适,但为了完全还是选择提一下。

先回答一个问题,什么时候适合用枚举类?

我们通常在一个类中的对象数量是有限且固定的时候选择使用枚举类。

我们来看下面这个小例子

public enum EnumDemo01 {SPRING("春暖花开"),SUMMER("夏日炎炎"),FALL("秋高气爽"),WINTER("冬寒抱冰");String season;EnumDemo01(String season) {this.season = season;}}

我们都知道,一年四季,对象是已知个数并且类型一致,说明适合用枚举类。在工作中我们通常用枚举类表示程序中的异常错误码以及异常原因。

写在最后

本篇主要讲述四种类中的成员以及它们的不同点,在工作场景中最常见的就是普通类、抽象类以及接口类。特别是抽象类和接口类,我们要理解它们的功能在不同的场景下灵活使用来驱使我们的程序更加通用且扩展性强。

更多推荐

四大类之《普通类、接口类、抽象类、枚举类》

本文发布于:2024-03-05 20:13:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1713288.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:接口   抽象类

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!