zoukankan      html  css  js  c++  java
  • 关键字——this,super,static,final

    this

    • 理解为当前对象
    //测试
    public static void main(String[] args){
         Person person = new Person(3, "xiaoMing"); 
    }
    //创建一个类:
    class Person{
          int age;
          String name;
          public Person(int age,String name){
                this.age = age;  //this:当前对象,在这里是指person这个对象。
                this.name = name;
          }
    }
    
    • 可以调用构造器
      ①调用本类的其他构造器
      ②不能调自己
      ③构造器中使用this,则必须放在构造器的 首行
    class Person{
          int age;
          String name;
          public Person(int age){  //①
                this.age = age; 
          }
          
          public Person(int age, String name){
                this(age); //调用① 构造器
                this.name = name;
          }
    }
    //测试:
    public static void main(String[] args){
         Person person = new Person(3, "xiaoMing"); 
    }
    

    super

    • ① 若子类的属性(方法等)和父类的重名,可以用super.属性(方法等)调用父类的属性(方法等)【重写是个范例】
    • ② super调用父类构造器
      在子类构造器中声明super,则必须声明在首行,this和super不能同时出现
      在构造器首行,没有显式出现super,默认是super()构造器

    static

    • 不能修饰构造器
    • static修饰的变量,叫静态变量,没有用static修饰的变量叫 实例变量,静态变量内存种独一份,被所有对象共享,当且仅当类被初次加载时会被初始化,而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
    • 静态变量在内存中存在一份,在方法区中的静态域中。
    • static修饰方法,叫静态方法,静态方法中只能声明静态属性,方法。
      非静态方法即可调用静态方法也可调用非静态方法
    • 在static方法中,不能使用this和super关键字

    final

    • final修饰的属性可以被赋值的地方有:显式初始化,代码块中初始化,构造器中初始化
    class Person{
          int age ;
          String name;
          final int C = 3; //显式初始化
          final int B ;
          final int A ;
    
          {
                B = 3; //代码块中赋值
          }
    
          public Person(){
                A = 3; //构造器中赋值
          }
    
          public Person(int n){
                A = n;  //若用构造器赋值,则每写一个构造器都要赋值一次,
                            //因为有的构造器不一定用
          }
    }
    
    • 修饰类:此类不能被继承,'断子绝孙',不能说明该类中的属性和方法是final的
    • 修饰方法:此方法不能被重写,但是仍然可以继承
    • 修饰属性:
      ①若该属性是基本数据类型,则不能被修改
      ②若该属性是引用数据类型,如数组,对象,则该对象,数组的值可以被修改,
      但是引用不能修改
    //1.
    class Dog1{
        String name;
        //编译错误,age必须赋值
        final int age = 3;
    }
    //测试
    final Dog1 dog = new Dog1();
            System.out.println(dog);
            dog.name = "dd";
            System.out.println(dog.name); //输出dd
            dog.name = "cc";
            System.out.println(dog.name); //输出cc,里面的值可以改
    
            dog = new Dog1(); //编译错误,引用不能修改
    //2.
    final int[] arr = {11,33,44};
            arr[2] = 2; //可以修改
            System.out.println(arr[2]); //输出2
            arr = new int[]{1};  //error,编译错误,引用不能修改
    
    • final还可以修饰局部变量:作用就是让局部变量不能再修改了
    class Person{
          public void show(final int a){
               a = 3; //error,表示a只能使用不能修改
          }
    
          public void show2(int a){
                final int b = 3; //表示b不能修改了
                b = 4; //error
          }
    }
    
    static final 修饰属性:表示全局常量
    
  • 相关阅读:
    toj 2819 Travel
    toj 2807 Number Sort
    zoj 2818 Prairie dogs IV
    zoj 1276 Optimal Array Multiplication Sequence
    toj 2802 Tom's Game
    toj 2798 Farey Sequence
    toj 2815 Searching Problem
    toj 2806 Replace Words
    toj 2794 Bus
    css截取字符
  • 原文地址:https://www.cnblogs.com/huyuqing/p/14320065.html
Copyright © 2011-2022 走看看