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 修饰属性:表示全局常量
    
  • 相关阅读:
    Android Scroller简单用法
    android 使用Scroller实现缓慢移动
    Android中View绘制优化之三---- 优化View
    Android中View绘制优化二一---- 使用<include />标签复用布局文件
    世纪互联云和华为共同打造的数据中心是一个很好的一步标志!
    isset,empty,is_null小知识
    迭代法塔的问题,如果中国
    hdu4288 Coder(段树+分离)
    关于淘汰85%查看面试官百度开发者面对的问题
    生命游戏(两),有一种东西叫CCScrollView
  • 原文地址:https://www.cnblogs.com/huyuqing/p/14320065.html
Copyright © 2011-2022 走看看