zoukankan      html  css  js  c++  java
  • java中的this、super、static、final、abstract关键字的作用

    this关键字的作用

    1、this是对象内部指代自身的引用,同时也是解决成员变量和局部变量同名问题;

    2、this可以调用成员变量,不能调用局部变量;

    3、this也可以调用成员方法,但在普通方法中可以省略this,在构造方法中不允许省略,必须是构造方法的第一条语句。而且在静态方法中不允许出现this关键字。

    super关键字的作用

    1、super代表对当前对象的直接父类对象的引用;

    2、super可以调用直接父类的成员变量(注意权限修饰符的影响,比如不能访问private成员);

    3、super可以调用直接父类的构造方法,只限构造方法中欧使用,且必须是第一条语句。

    static关键字的作用

    staic是java中的一个关键字,单词本身是静态的意思

    使用static修饰的成员成为静态成员,是属于某个类的;而不使用static修饰的成员称为实例成员,是属于类的每个对象的。

    一个类的成员包括变量、方法、构造方法、代码块、和内部类,static可以修饰除了构造方法以外的所有成员

    1、static修饰变量

      static属性属于这个类所有,即由该类创建的所有对象共享一个satic属性。static变量和非static变量都是成员变量,这是共同点,区别主要有:

      1)在内存中份数不同

        不管有多少个对象,static变量只有一份。对于每个对象,实例变量都会有单独一份

        非static变量好比水杯,一个人一个;static变量好比饮水机,大家共享

      2)在内存中存放的位置不同

        静态变量存在方法区中,实例变量存在堆内存中

      3)访问的方式不同

        实例变量:对象名.变量名

        静态变量:对象名.变量名,不推荐如此使用;类名.变量名,推荐使用

      4)在内存中分配空间的时间不同

        实例变量:创建对象的时候才分配了空间

        静态变量:第一次加载类的时候

    2.static修饰方法

      可以通过对象名.方法名和类名.方法名两种方式来访问

    3.satic修饰代码块

      当类被第一次加载时(可能是调用static属性和方法,或者创建其对象)执行静态代码块,且只被执行一次,主要作用是实现static属性的初始化

    4.static修饰内部类

      属于整个外部类,而不是属于外部类的每个对象。不能访问外部类的非静态成员(变量或者方法),可以访问外部类的静态成员

    5.静态导入

      import static java.lang.Math.*;非导入类和接口,而是导入类和接口的静态成员

    abstract关键字的作用

    1、abstract可以用来修饰类和方法,不能用来修饰属性和构造方法;

    2、使用abstract可以用来修饰的类是抽象类,需要被继承;

    3、使用abstract修饰的方法是抽象方法,需要被子类重写

    final关键字的作用

    1、final可以用来修饰类、方法和属性,不能修饰构造方法。

    2、使用final修饰的类不能被继承,使用final修饰的方法不能被重写,

    3、使用final修饰的变量的值不能被修改,所以就成了常量。

    特别注意:final修饰基本类型变量,其值不能改变,由原来的变量变为常量;但是final修饰引用类型变量,栈内存中的引用不能改变,但是所指向的堆内存中的对象的属性值仍旧可以改变

    class Test {
    public static void main(String[] args) {
    final Dog dog = new Dog("小黄");
    dog.name = "大黄";//正确
    dog = new Dog("黄黄");//错误
    }
    }
  • 相关阅读:
    BZOJ 2034 【2009国家集训队】 最大收益
    vijos P1780 【NOIP2012】 开车旅行
    BZOJ 2115 【WC2011】 Xor
    BZOJ 3631 【JLOI2014】 松鼠的新家
    BZOJ 4717 改装
    BZOJ 2957 楼房重建
    BZOJ 4034 【HAOI2015】 T2
    BZOJ 1834 【ZJOI2010】 network 网络扩容
    BZOJ 2440 【中山市选2011】 完全平方数
    BZOJ 2733 【HNOI2012】 永无乡
  • 原文地址:https://www.cnblogs.com/huxiaoyang/p/12003465.html
Copyright © 2011-2022 走看看