美文网首页
final关键字

final关键字

作者: chenanle | 来源:发表于2017-03-27 00:35 被阅读0次
    • 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关键字

          本文链接:https://www.haomeiwen.com/subject/ujflottx.html