类和对象
类的声明&this解决与参数重名的成员变量
1 | import java.util.Scanner; |
this()方法
◼ 一个类的构造函数之间可以相互调用
◼ 调用方法:this([参数])
◼ 注意:
◼ this() 仅在类的构造函数中使用,别的地方不能用
◼ this() 必须是整个构造函数的第一个可执行语句
1 | import java.util.Scanner; |
this关键字
this.方法名:让类中的一个方法访问另外的一个方法
1 | import java.util.Scanner; |
静态变量
◼ 运行时,Java 虚拟机为静态变量只分配一次内存,在加载类的过程
中完成静态变量的内存分配
◼ 在类的内部,可以在任何方法内直接访问静态变量
◼ 在其他类中,可以通过 类名.静态变量 来访问(也可通过对象,但不推荐)
静态变量的作用
静态变量作用
◼ 静态变量可被类的所有实例共享,因此静态变量可以作为实例之间的
共享数据,增加实例之间的交互性。
◼ 如果类的所有实例都包含一个相同的常量属性,则可以把这个属性定
义为静态常量类型,从而节省内存空间。
所有的实例共享一个静态变量,一旦其中一个实例做出了修改,其他的实例也会改变.
1 | public class Main |
如果删去上述代码的static,Name和Name1两个对象的name将不会相互影响。
静态方法
◼ 静态方法只能调用静态成员( static方法或static数据)
◼ 静态方法是在class装载时首先完成,比构造方法早,此时非静态属性和
方法还没有完成初始化。所以静态方法不能调用非静态方法和属性
◼ ** 静态方法不能以任何方式引用 this 或 super **
◼ 静态方法不需要通过它所属的类的任何实例就可以被调用,因此在静态
方法中不能使用 this 关键字
◼ 和 this 关键字一样,super 关键字也与类的特定实例相关,所以在静态方
法中也不能使用 super 关键字
静态方法想要访问非静态方法需要先创建一个对象,通过这个对象才能访问到非静态方法。
1 | import java.util.Scanner; |
静态代码块只会在加载类时被执行一次,此后都不会运行,即使时创建一个新的对象
1 | public class Main |
上述代码只会输出:静态代码块已经执行1。
final关键字
final类
◼ 在设计类时候,如果这个类的实现细节不允许改变,类不需要有子类,
并且确信这个类不会载被扩展,那么就设计为final类 ◼ final类不能被继承。因此final类的成员方法没有机会被覆盖
final方法
◼ final方法可以被继承,但不能被重写(覆盖) ◼ 使用final方法的原因有二:
◼ 把方法锁定,防止任何子类修改它的实现
◼ 高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率
final变量
◼ final 修饰基本类型变量时即成为常量,且只能赋值一次 (可先声明,不给初值,但在使用之前必须被初始化一次)
◼ final 修饰引用类型变量时,只保证这个引用类型变量所引用的地址不会改变,但其自身的成员变量的值可以被改变
1 | public static void main(String[] args) |
本文作者: jiangyuhao
本文链接: http://example.com/2022/03/07/java%E7%B1%BB%E5%92%8C%E5%AF%B9%E8%B1%A1/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!