Java中关键字(abstract,static,final,this,super)

1,abstract:可以修饰类和方法。修饰后就变成了抽象方法,抽象类

(1)如果修饰类的话,此类必须被继承使用,abstrcat最大程度的将子类的共性抽出来。abstract虽然不能生成对象,但可以声明,作为编译时类型,final与abstract不能同时出现。

(2)一个有抽象方法的类,一定是抽象类,但一个抽象类的不一定有抽象方法。

(3)抽象类不可创建对象,但可以有构造函数(子类可以继承)。

(4)子类继承抽象类,必须实现其中的抽象方法,除非子类也是抽象类。

(5)abstract不可与private、static、final、native、synchronized

2.static

(1)作用:方便在没有创建对象的情况下时调用(方法/变量)。只要在类加载了,就可以通过类名调用。

(2)在静态方法中不能调用非静态的成员变量或成员方法,但非静态的方法可以访问静态的成员变量或方法。

(3)静态变量:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类加载的时候会被初始化。非静态成员是对象所拥有,在创建对象的时候,存在多个副本,对象拥有的副本互不影响。

(4) static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

(5)static是不允许用来修饰局部变量

题:public class Test extends Base{

    static{

        System.out.println("test static");

    }

     

    public Test(){

        System.out.println("test constructor");

    }

     

    public static void main(String[] args) {

        new Test();

    }

}

class Base{

     

    static{

        System.out.println("base static");

    }

     

    public Base(){

        System.out.println("base constructor");

    }

}

base static test static base constructor test constructor

先加载类,再new 执行构造。

3,final

(1)修饰类:这个类不会被继承,final类中的所有成员方法都会被隐式地指定为final方法。

(2)修饰变量:对于一个基本类型的变量,一旦在初始化了之后就不能再改变。如果是引用类型的变量,在初始化之后便不能改变其引用,但是它指向的对象的内容是可变的。

(3)修饰方法:把方法锁定,以防任何继承类修改它的含义,。类的private方法会隐式地被指定为final方法。

题:

MyClass myClass1 = new MyClass();

MyClass myClass2 = new MyClass();

System.out.println(myClass1.i);

System.out.println(myClass1.j);

System.out.println(myClass2.i);

System.out.println(myClass2.j);

class MyClass {

public final double i = Math.random();

public static double j = Math.random();

}

结果:

0.4527538724400425

0.56876948705211

0.4132824472418981

0.56876948705211

可见final与static的区别。

4 this

(1)是一个引用,它指向自身的引用。一般在类的构造函数中使用,区分开形参和成员变量。

5.super:

(1)用来引用父类的成分。一种是引用被子类隐藏的父类成员,一种是引用父类的构造。

(2)可用super.成员变量或成员方法。如在父类未找到,则继续向上寻找。

(3)在子类的构造函数中如没有super方法,就会默认super()方法调父类构造。

(4)对于父类中包含有参数的构造方法,子类可以通过在自己的构造方法中使用super关键字来引用,而且必须是子类构造函数方法中的第一条语句。

发布了28 篇原创文章 · 获赞 12 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42002367/article/details/81228515