zoukankan      html  css  js  c++  java
  • JAVA中final修饰符小结

    一、final关键字可以用来修饰类、方法、变量。各有不同。

    A、修饰类(class)。 
         1、该类不能被继承。 
         2、类中的方法不会被覆盖,因此默认都是final的。 
         3、用途:设计类时,如果该类不需要有子类,不必要被扩展,类的实现细节不允许被改变,那么就设计成final类

    B、修饰方法(method) 
         1、该方法可以被继承,但是不能被覆盖。 
         2、用途:一个类不允许子类覆盖该方法,则用final来修饰 
         3、好处:可以防止继承它的子类修改该方法的意义和实现;更为高效,编译器在遇到调用fianal方法转入内嵌机制,提高了执行效率。 
         4、注意:父类中的private成员方法不能被子类覆盖,因此,private方法默认是final型的(可以查看编译后的class文件)

    C、修饰变量(variable) 
         1、用final修饰后变为常量。包括静态变量、实例变量和局部变量这三种。 
         2、特点:可以先声明,不给初值,这种叫做final空白。但是使用前必须被初始化。一旦被赋值,将不能再被改变。

    D、修饰参数(arguments) 
         1、用final修饰参数时,可以读取该参数,但是不能对其作出修改。

    二、抽象类&&接口

    A、抽象类(abstract class) 
         1、抽象方法(abstract method):不含方法体的方法,它由继承它子类根据需求去实现,必须用abstract修饰。此外,该方法必须对子类可见,因此要加只能加public 或者 protected!。 
         2、抽象类:至少包含一个抽象方法的类(可以包含非抽象方法)。必须用abstract修饰。 
         3、特点:抽象类不能被实例化(也就是不能new对象);含有抽象方法的类必须声明为抽象类;一个类只有实现了抽象类中的所有方法才能被实例化,否则它依然是抽象类。

    B、接口(interface) 
         1、接口定义:抽象方法和常量值的集合(所有的方法都是抽象方法)。它是一种特殊的抽象类(会生成一个xxx.class文件,编译器会自动在interface关键字前加上abstract)。 
         2、特点: 
              a、接口里的常量默认都是public static final来修饰的(如果什么都不写,编译器会自动帮你写上)。 
              b、接口里的方法默认都是public abstract来修饰的(如果是什么都不写,编译器会自动帮你写上)。 
              c、可以用extends继承已有的接口。 
              d、一个类,可以用implements实现一个或多个接口中的所有方法(包括这个接口的父接口中的方法)。 
              e、一个抽象类,可以implements实现接口中的部分方法 
             
    f、一个类,可以extends一个父类的同时implements多个接口,但是extends关键字必须在implements关键字之前。

    转自博客:blog.csdn.com/whuslei

  • 相关阅读:
    Attributes in C#
    asp.net C# 时间格式大全
    UVA 10518 How Many Calls?
    UVA 10303 How Many Trees?
    UVA 991 Safe Salutations
    UVA 10862 Connect the Cable Wires
    UVA 10417 Gift Exchanging
    UVA 10229 Modular Fibonacci
    UVA 10079 Pizza Cutting
    UVA 10334 Ray Through Glasses
  • 原文地址:https://www.cnblogs.com/qq188380780/p/6607578.html
Copyright © 2011-2022 走看看