DESKTOP-AD6BCSN_张景安-2020-12-8

总结:

1 包

Java中的包也是一种封装机制。

1.1 概述

  • 存放类
  • 防止命名冲突:Java中只有在不同的包中的类才能重名
  • 包允许在更广的范围内保护类、数据和方法。

1.2 定义

package 包名

  • package是关键字
  • 包的声明必须是Java源文件中的第一条非注释性的语句,而且一个源文件只能有一个包的声明语句。

2 static关键字

2.1 修饰属性、方法

使用static修饰的属性、方法称为静态属性、方法或类变量、方法。没有用static修饰的属性称为实例变量、方法。使用static修饰的属性属于类,不属于具体的某个对象。类属性在类名首次出现时初始化,即使没有创建对象也是可以调用的

2.2 static和instances的区别

  1. 静态成员和实例成员分配内存的时机
    • 静态成员是在类名首次出现时,最先分配内存的,静态属性分配在方法区。然后调用静态块,多个静态块按照定义的顺序从上到下调用
    • 实例成员是在实例化时分配内存的,如果没有实例化对象那么实例成员就没有分配内存。
  2. 静态成员和实例成员分配内存的次数
    • 静态成员只分配一次内存。因此静态成员只有一份
    • n实例成员在对象实例化的时候创建,实例化几次分配几次内存
  3. 静态成员和实例成员的调用规则
    • 静态成员可以由类名直接调用,也可以用对象名调用,但是不推荐使用对象名调用。
    • 实例成员只能由对象名调用,不能使用类名调用。
      • 静态属于类成员,因此静态成员也称为类成员(类变量,类方法)
      • 实例成员属于对象

2.3 Java中的常量

值不可以更改的变量称为常量

使用static final修饰的变量是类变量

使用final修饰的变量是实例变量

修饰类时不可以被继承,修饰方法时不可以被子类重写,修饰属性时值不能更改。

3 继承

3.1 基本概念

继承是软件可重用的一种表现,新类可以在不增加自身代码的情况下,通过从现有的类中继承其属性和方法,来充实自身内容,这种现象或行为称为继承。

Java中只有单继承,即一个类只能有一个直接父类。

  1. 访问修饰符如果是public,那么该类在整个项目中可见。
  2. 如果不写访问修饰符,则该类只能从当前包中可见。
  3. 在Java中,子类可以从父类继承以下内容
    • 可以继承public 和 protected 修饰的属性和方法,不论是子类和父类是否在一个包里。
    • 可以继承默认访问修饰符修饰的属性和方法,但是子类和父类必须在同一个包里。
    • 无法继承父类的构造方法。

3.2 super关键字

super关键字在子类中,目的只有一个就是访问直接父类中被屏蔽的内容,进一步提高代码的重用性和灵活性。

  • super只能出现在子类中(子类的普通方法或者构造方法中),而不是其他位置。
  • super用于访问父类成员,如无法通过super访问父类private成员。

main方法中创建对象时,JVM到底创建了多少个对象?

  • 当实例化一个对象时,该对象的所有父类也都被实例化了。

这些被实例化的对象实例化的顺序是什么?

  • 从父类到子类

继承中构造函数的调用顺序是?

  • 从子类到父类调用

继承中构造函数的执行顺序是?

  • 从父类到子类

评论