1、super

在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来。当new一个子类对象的时候,必须首先要new一个父类的对像出来,这个父类对象位于子类对象的内部,所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况.

总结:new一个对象的时候,必须调用构造方法(语言规定),而构造子类时,必须调用父类的构造方法。

所以:

        如果父类有无参构造方法,子类构造方法中可以不显示调用父类的构造方法;

        如果父类有有参构造方法,子类构造方法必须使用如super("Lucy")显示调用父类的构造方法。

使用的地方

        调用父类的构造方法:super("Lucy");一般要写在第一行。

        调用父类的实例方法:super.method();

        调用父类的成员变量:super.var;

        静态方法或静态代码块中不能使用super




2、this

        用到this的地方


                构造方法互相调用;

                this.name=name;

                owner.setDog(this);

3、访问控制修饰符


        修饰符种类:公开public、保护protected、默认、私有private


        可修饰内容:成员变量、成员方法、构造方法


        另外:顶层类只能由public或默认修饰

java中子类定义 java中定义子类的关键字_关键字


 



4、abstract

        可以修饰类或者成员方法。

        修饰的类为抽象类,不能被实例化;修饰的方法为抽象方法,无方法体。

注意事项:

        抽象类中可以有非抽象方法;包括抽象方法的类必须是抽象类;继承抽象类后未实现父类所有抽象方法的类必须是抽象类。

        没有抽象构造方法和抽象静态方法。

        抽象类中可以有非抽象的构造方法。

        抽象类不能被实例化,但抽象类可以创建一个引用变量,让它引用非抽象子类的实例。

        抽象类和抽象方法不能被final修饰。



5、final

        可以修饰非抽象类,非抽象成员方法和变量

        final修饰的类不可被继承;修饰的方法不可被子类覆盖;修饰的成员变量只能被显示赋值一次,修饰的实例变量可以定义时赋值或在构造方法中赋值,修饰的静态变量特殊处理。

        final不能修饰构造方法

        private类型的方法默认是final类型的

        final修饰的引用变量,不能改变引用的对象,但可以改变引用对象的内容



6、static

        可以修饰成员变量,成员方法或代码块。

        被修饰的变量和方法可以通过类名或实例名来调用。

        静态方法中可以访问静态变量和静态方法,不可以用this,super等。

        静态方法必须被实现,不能和abstract共存(abstract也不能和final共存)。

        静态方法和实例方法的字节码都位于方法区。

        静态代码块,在加载类的时候被且只被执行一次,多个静态代码块时,按他们出现的顺序执行,比main方法早。