多个关键字

本文探讨了Java中的静态关键字、final关键字的使用,涉及静态变量、静态方法、final变量和方法,以及this与super的区别。重点讲解了静态方法调用非静态成员的限制和final关键字在不同情况下的应用。
摘要由CSDN通过智能技术生成

static关键字
(1)修饰变量:静态变量-类变量,静态变量存在于方法区中,只存在一个副本,所有对象共享一个变量,只在类的加载时被初始化,因此当某个对象修改了静态变量后,其他对象调用的是被修改过的。
(2)修饰方法:静态方法,可以直接用类名.静态方法的方式访问,不依赖于对象。静态方法里面不可以调用非静态方法,因为他没有对象,而非静态方法可以调用静态方法。
(3)修饰代码块:只会在类的初次加载中被执行一次,通常将只执行一次的初始化操作都放在static代码块的进行。
(4)修饰静态内部类:定义在类内部类叫做内部类,内部类持有外部类的引用,因此可以访问外部类的所有变量和方法。不能从静态内部类的对象,访问外部类的非静态成员。

2、在一个静态方法内调用一个非静态成员为什么是非法的?
因为静态方法时属于类的,在类加载的分配内存,可以通过类名直接访问,而非静态成员是属于实例对象,只有对象实例化之后,才能通过类的实例化对象去访问。在类的静态成员存在的时候非静态成员还没有出现。

3、final关键字 可以修饰方法、变量、类
(1)final修饰变量表示常量,包括成员变量和局部变量,该变量只能被赋值一次且不能更改。这里的不可变是指引用不可变,如果修饰list,随便增删。如果是类的成员变量,那么在声明时必须初始化。如果是局部变量,要么直接赋值要么构造方法中初始化,否则编译报错。
(2)修饰方法,表示方法不可重写。
(3)修饰类,表示方法不可被继承。final类中所有方法都是final方法。
*不能对final修饰的形参直接赋值,只能通过调用该方法来传入参数赋值。
引申:不用final还可以用什么办法使得这个类不被继承
将类的构造器用private类型修饰,然后继承的子类必须调用父类的构造方法,因为是私有构造方法,因此不能被调用。

4、final finally finalize区别
(1)final可以修饰类、变量、方法,修饰类表示该类不可被继承,修饰变量表示该变量不可改变,修饰方法表示该方法不可被重写。
(2)finally一般用于try-catch代码块中,在处理异常时,通常将一定要执行的代码方法放到finally代码块中,表示不管是否出现异常,都会执行该代码块。
(3)finalize是一个方法,属于object类的一个方法,该方法一般用垃圾回收器调用,当我们调用System.gc() 方法的时候,由垃圾回收器调用finalize()回收垃圾。

5、this关键字的用法
this是自身的一个对象,代表对象本身,可以理解为指向对象本身的指针。
(1)形参与成员变量重名时,用this来区分。
(2)普通的直接引用,this相当于指向对象本身 this.属性 this.方法
(3)引用本类的其他构造函数 this()

4、super关键字的用法
super可以理解为指向超类对象的一个指针,超类指的是离得最近的一个父类。
(1)super(形参列表)子类对象与父类对象的成员变量重名,用super区分
(2)super相当于指向当前对象的父类的引用。
(3)引用父类的构造函数

5、this与super的区别
(1)super()是在子类中调用父类的构造方法,而this()是在本类中调用本类的其他构造方法。
(2)两个方法都要放在构造器的第一行。
(3)super和this不能都一个构造函数里。因为this肯定调用其他的构造函数,其他构造函数必定有super语句的存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值