java学习笔记(七)

类的创建过程:

    1.加载.class文件进方法区

    2.如果有静态变量,先默认初始化,再显示初始化。

    3.如果有静态代码块,要执行、仅一次。

    4.通过new在堆内存中,开辟空间,并明确指向地址。

    5.对对象中的属性进行默认初始化

    6.调用对应的构造函数进行初始化

    7.构造函数内部

    8.对象初始化完毕后,将地址赋给创建者

继承

好处:提高了代码的复用性,让类与类产生了关系。

允许单继承,不直接支持多继承。单继承:一个子类只有一个父类;多继承:一个子类可以有多个父类。

如何在子类中直接访问同名的父类中的变量呢?

    this:代表的是本类的对象的引用

    super:代表的是父类内容空间

子类不能直接访问父类的私有方式

如果在子类中,对父类函数进行了重写,但仍需使用父类功能,则使用super。

重写的注意事项:

    1.子类覆盖父类,必须保证权限大于/等于父类

    2.静态覆盖静态

  写法:必须一样(类型+名字)

子类中所有构造函数中的第一行都偶有一句隐式语句super();

子类默认调用父类的空参构造函数。

细节:

    1.如果子类的构造函数第一行写了this调用本类的其他构造函数,不再有super()。因为this()/super()只能定义在构造函数第一行。

    2.父类构造函数中也有super(),所有对象的父类是object。

final:是一个修饰符,可以修饰类,方法、变量(成员变量,局部变量,静态变量)

            修饰的类是一个最终类,不能派生子类。

            修饰的方法是最终方法,不可以给重写。

            修饰的变量是一个常量,只能赋值一次。

abstract:抽象,定义了抽象函数的类也必须抽象,

抽象类:在描述事物时,没有足够的信息描述一个事物,这时该事物就是抽象事物。

特点;

    1.抽象类/方法都要被abstract修饰,抽象方法一定要定义在抽象类中。

    2.抽象类不可以创建实例,(调用抽象方法没有意义)。

    3.只有覆盖了抽象类中的所有的抽象方法后,其子类才可以实例化,否则该子类还是一个抽象类。

抽象类一定是个父类,有构造函数,虽然不能给自己初始化,但可以给自己子类初始化。

抽象类与一般类的异同点:

    同:1.都是用来描述事物的

            2.都可以定义属性和行为

    异:1.一般类可以具体的描述事物,抽象类描述事物的信息不具体。

            2.抽象类中可以多定义一个成员:抽象函数

            3.一般类可以创建对象,而抽象类不能创建对象。

抽象类 abstract不能和哪些关键字共存?

            final     private     static

猜你喜欢

转载自blog.csdn.net/qq_38354978/article/details/80553829