final的作用、抽象类、接口及特点

final的作用

final 关键字是最终的意思,可以修饰(方法,变量,类)

修饰方法:表明该方法是最终方法,不能被重写。

修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)。

修饰类:表明该类是最终类,不能被继承。

final修饰变量的注意

final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。

final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的。

常量

常量是使用了public static final修饰的成员变量,必须有初始化值,而且执行的过程中其值不能被改变。

常量命名规范:英文单词全部大写,多个单词下划线连接起来。

枚举的概述

枚举是Java中的一种特殊类型 。枚举的作用:"是为了做信息的标志和信息的分类"。

定义枚举类的格式:

 修饰符 enum 枚举名称{
            第一行都是罗列枚举类实例的名称。
}
enum Season{
      SPRING , SUMMER , AUTUMN , WINTER;
}

枚举类都是继承了枚举类型:java.lang.Enum 。枚举都是最终类,不可以被继承。 构造器都是私有的,枚举对外不能创建对象。 枚举类的第一行默认都是罗列枚举对象的名称的。 枚举类相当于是多例模式。

抽象类

在Java中abstract是抽象的意思,如果一个类中的某个方法的具体实现不能确定,就可以申明成abstract修饰的抽象方法(不能写方法体了),这个类必须用abstract修饰,被称为抽象类。

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

抽象类可以理解成类的不完整设计图,是用来被子类继承的。 一个类如果继承了抽象类,那么这个类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。

final和abstract是什么关系?

互斥关系 abstract定义的抽象类作为模板让子类继承,final定义的类不能被继承。 抽象方法定义通用功能让子类重写,final定义的方法子类不能重写。

模板方法模式

当系统中出现同一个功能多处在开发,而该功能中大部分代码是一样的,只有其中部分可能不同的时候。实现步骤:把功能定义成一个所谓的模板方法,放在抽象类中,模板方法中只定义通用且能确定的代码。 模板方法中不能决定的功能定义成抽象方法让具体子类去实现。

接口

接口是用来被类实现(implements)的,实现接口的类称为实现类。实现类可以理解成所谓的子类。接口可以被类单实现,也可以被类多实现。

接口无法被实例化,但是可以被实现。接口不能创建对象。

interface Animal {

public void eat();

public void travel();   }

类和类的关系:单继承。 类和接口的关系:多实现。 接口和接口的关系:多继承,一个接口可以同时继承多个接口。

抽象类和接口的区别

  • 1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
  • 2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
  • 3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
  • 4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

JDK8开始后新增了那些方法?

默认方法:default修饰,实现类对象调用。

静态方法:static修饰,必须用当前接口名调用 私有方法:

private修饰,jdk9开始才有的,只能在接口内部被调用。 他们都会默认被public修饰。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值