zoukankan      html  css  js  c++  java
  • Java中的final和static关键字

    final关键字:

    概念:

      final的意思是最终,不可变。它是个修饰符,用来修饰类、类的成员及局部变量;不能修饰构造方法。

    特点:

    ①、final修饰符不可以被继承,但是可以继承其他类;

    ②、final修饰的方法不可以被子类重写,但是父类中没有被final修饰的方法可以被子类重写,并且可以加final;

    ③、final修饰的变量为常量,这些变量只能赋值一次,且终身不变

    ④、引用类型的变量值为对象地址值,地址值不能更改,但是地址内的对象属性值可以修改;

    ⑤、修饰成员变量,需要在创建对象前赋值,否则报错。(当没有显式赋值时,多个构造方法的均需要为其赋值。)可以在创建对象时调用的构造方法中,为变量N赋值。

    ⑥、局部变量:一次赋值,终身不变。定义时可以不赋值,使用再赋值。不赋值不能用。

    static关键字:

    概念:

    static是静态修饰符,一般用来修饰类中的成员。

    特点:

    ①、被static修饰的成员变量属于类,不属于这个类的某个对象。(也就是说,多个对象在访问或修改static修饰的成员变量时,其中一个对象将static成员变量值进行了修改,其他对象中的static成员变量值跟着改变,即多个对象共享同一个static成员变量)

    ②、被static修饰的成员可以并且建议通过类名直接访问。

    访问静态成员的格式:

    类名.静态成员变量名

    类名.静态成员方法名(参数)

    注意事项:

    ①、静态内容是优先于对象存在,只能访问静态,不能使用this/super(this 是本来对象,super是父类对象)。静态修饰的内容存于静态区。

    ②、 同一个类中,静态成员只能访问静态成员,普通的可以访问静态的。

    ③、main方法为静态方法仅仅为程序执行入口,它不属于任何一个对象,可以定义在任意类中。

    ④、多态调用方法中,编译看=左边,父类有,编译成功,父类没有,编译失败

    运行,静态方法,运行父类中的静态方法,

    运行,非静态方法,运行子类的重写方法

    成员变量,编译运行全是父类

    定义静态常量:

    通常使用public static final修饰的变量来完成定义。此时变量名用全部大写,多个单词使用下划线连接。

    public static final 数据类型 变量名 = 值;

    当我们想使用类的静态成员时,不需要创建对象,直接使用类名来访问即可。

    注意事项:

    接口中的每个成员变量都默认使用public static final修饰。

    所有接口中的成员变量已是静态常量,由于接口没有构造方法,所以必须显示赋值。可以直接用接口名访问。

    public class Student {
        private String name;
        public static String schoolname;
    
        public Student() {
            super();
        }
    
        public Student(String name) {
            super();
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    public static void main(String[] args) {
            Student s1=new Student("于昊正");
            Student.schoolname="北京大学";
            Student s2 = new Student("荣泽军");
            Student.schoolname="清华大学";
            Student s3 = new Student("耿福林");
            System.out.println(s1.getName() + "..." + Student.schoolname);
            System.out.println(s2.getName() + "..." + Student.schoolname);
            System.out.println(s3.getName() + "..." + Student.schoolname);
            get();
        }
    结果:于昊正...清华大学
    荣泽军...清华大学
    耿福林...清华大学

  • 相关阅读:
    Oracle DB 备份恢复目录
    Oracle DB 在恢复目录中注册数据库
    Flex中动态生成DataGrid以及动态生成表头
    Flex报错归类(三)
    Flex报错归类(二)
    QuickServer
    Oracle DB 创建恢复目录
    Oracle DB 创建恢复目录所有者
    Oracle DB 使用DBCA创建单实例ASM数据库用作恢复目录数据库
    OCP-1Z0-053-V12.02-628题
  • 原文地址:https://www.cnblogs.com/heitaitou/p/12821655.html
Copyright © 2011-2022 走看看