final关键字

  • 1.系统不会对final成员属性进行默认初始化
final int age;
{
    System.out.println(age); //此处代码会出错,因为系统不会对final成员属性进行默认初始化
}
  • 2.不能对final修饰的形参赋值
public void test(final int a) {
    a = 5; //这句语句是非法,因为不能对final修饰的形参赋值
}
public static void main(String[] aegs) {
    final double d; //定义局部变量没有指定默认值,则d可以被赋值一次
    d = 5.6; //第一次赋值成功
    d = 3.4; //此时语句非法,重复赋值
}
  • 3.final修饰的方法不能被重写
class Person {
    public finanl void test() {}
}

class Student extends Person {
    public void test() {} //此处编译出错,因为父类的方法不允许被重写
}
  • 4.final修饰的方法仅仅是不能被重写,并不是不能被重载
public final void test() {}
public final void test(String name) {}
  • 5.final修饰的类不能被继承
public final class Person {}
class Sub extends Person {} //此处编译出错
  • 如果采用new构造器来创建Integer对象,则每次返回全新的Integer对象,如果采用valueOf()方法来创建Integer对象,则会缓存该方法创建的对象
public class TestIntegerCache {
    public static void main(String[] args) {
        Integer in1 = new Integer(6);
        Integer in2 = Integer.valueOf(6);
        Integer in3 = Integer.valueOf(6);
        System.out.println(in1 == in2);
        System.out.println(in2 == in3);
    }
}
  • 输出结果为:
false
true

抽象:抽象父类只要定义需要使用的某些方法,其余留给子类去实现

  • 抽象方法,括号后没没有花括号,再加上个分号
public abstract void test();
  • 当abstract修饰类时,表明这个类只能被继承,当bastarct修饰方法时,表明这个方法必须由子类提供实现(既重写)。而final修饰的类不能被继承,修饰的方法也不能被重写,所以abstract和final永远不能同时使用
  • static和abstract不能同时修饰某个方法
  • abstract不能修饰属性,也不能修饰局部变量,也不能修饰构造器

接口:是从多个类中抽象出来的规范,接口不提供任何实现,接口体现的是规范和实现分离的设计哲学

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 你总以为你会了,其实你只是一知半解。 final 关键字概览 final关键字可用于声明属性、方法、参数和类,分别...
    Sharember阅读 2,471评论 2 26
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 1,232评论 0 5
  • final关键字 final可以修饰变量 变量必须被初始化,初始化以后不能被修改(即变成了常量) final可以修...
    liudai123阅读 222评论 0 0
  • 1、概念 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、...
    M_JCs阅读 1,475评论 0 0