zoukankan      html  css  js  c++  java
  • Java基础super关键字、final关键字、static关键字、匿名对象整理

            super关键字

     

    10.1子父类中构造方法的调用

    public class Test {

        public static void main(String[] args) {

           new Zi();

        }

       

    }

    class Fu{

        int num ;

        Fu(){

           System.out.println("Fu构造方法"+num);

           num = 4;

        }

    }

    class Zi extends Fu{

        Zi(){

             //super(); 调用父类空参数构造方法

           System.out.println("Zi构造方法"+num);

        }

    }

     执行结果:

           Fu构造方法0

           Zi构造方法4

    子类会继承父类中的内容,所以子类在初始化时,必须先到父类中去执行父类的初始化动作。这样,才可以使用父类中的内容。

    当父类中没有空参数构造方法时,子类的构造方法必须有显示的super语句,指定要访问的父类有参数构造方法。

    10.2子类对象创建过程的细节

    如果子类的构造方法第一行写了this调用了本类其他构造方法,那么super调用父类的语句还有吗?

    这时是没有的,因为this()或者super(),只能定义在构造方法的第一行,因为初始化动作要先执行。

    父类构造方法中是否有隐式的super呢?

    也是有的。记住:只要是构造方法默认第一行都是super();

    父类的父类是谁呢?super调用的到底是谁的构造方法呢?

    Java体系在设计,定义了一个所有对象的父类Object

    l  注意:

    类中的构造方法默认第一行都有隐式的super()语句,在访问父类中的空参数构造方法。所以父类的构造方法既可以给自己的对象初始化,也可以给自己的子类对象初始化。

    如果默认的隐式super()语句在父类中没有对应的构造方法,那么必须在构造方法中通过this或者super的形式明确要调用的构造方法。

     final关键字

    11.1final的概念

    继承的出现提高了代码的复用性,并方便开发。但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写。可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变。final是个修饰符,它可以用来修饰类,类的成员,以及局部变量。不能修饰构造方法。

    11.2final的特点

    final修饰类不可以被继承,但是可以继承其他类。

        final修饰的方法不可以被子类重写,但父类中没有被final修饰方法,子类重写后可以加final

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

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

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

     

       static关键字

    12.1static概念

             当在调用对象的某个方法时,这个方法没有访问到对象的特有数据时,方法创建这个对象有些多余。可以的,我们可以通过static关键字来实现。static它是静态修饰符,一般用来修饰类中的成员

    12.2static特点

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

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

     

        访问静态成员的格式:

    类名.静态成员变量名

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

    对象名.静态成员变量名       ------不建议使用该方式,会出现警告

    对象名.静态成员方法名(参数)    ------不建议使用该方式,会出现警告

     

    12.3static注意事项

    静态内容是优先于对象存在,只能访问静态,不能使用this/super。静态修饰的内容存于静态区。

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

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

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

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

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

    12.4定义静态常量

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

    格式

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

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

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

             匿名对象

    13.1匿名对象的概念

    匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。

    public class Person{

        public void eat(){

           System.out.println();

    }

    }

     

    创建一个普通对象

    Person p = new Person();

     

    创建一个匿名对象

    new Person();

    13.2匿名对象的特点

    创建匿名对象直接使用,没有变量名

    匿名对象在没有指定其引用变量时,只能使用一次

    匿名对象可以作为方法接收的参数、方法返回值使用

  • 相关阅读:
    box-sizing
    max-width
    如何编写高质量CSS
    CSS文字大小单位PX、EM、PT
    jQuery设计思想
    pageX,clientX,offsetX,layerX的那些事
    html块级元素和内联元素区别详解
    centos彻底删除mysql
    删:[CentOS 7] 安装nginx
    CentOS7.0安装与配置Tomcat-7
  • 原文地址:https://www.cnblogs.com/mengmengi/p/10528250.html
Copyright © 2011-2022 走看看