浅谈Java关键字

this关键字

在形参和属性名一致时,通过this来区分

调用本类的属性和方法(如果没有则从父类查找)

调用本类中重载的其他构造器,必须放在首行,所以只能调用一个其他构造器;

super关键字

子类和父类属性同名时(很少出现),默认调用自己的,调用父类的属性则要用 super.属性 的形式来调用,

子类重写了父类的方法,想在子类中调用父类重写的方法时,要用super.方法 的形式来调用,

调用父类的构造器,必须放在子类构造器的首行,

本类重载的其他构造器和父类的构造器,只能调用一个,

构造器首行没有显示的声明this 或 super时,则构造器会默认调用super()空参构造器,

final关键字

变量
基本数据类型:被final修饰后,其真实的数值无法在改变,即只能进行一次赋值操作,
引用数据类型:被final修饰后,其地址值无法改变,但地址值对应的空间,其内容可以变化,
对于成员变量,被final修饰后,在声明是就必须得初始化(赋值),对于方法里的变量(局部变量),不必初始化,

方法
被final修饰的方法无法被重写,可以进行重载,

public class Person {
	private String name;
	public Person() {	
	}
	//final修饰的方法
	public final void eat() {
		System.out.println("吃");
	}
}
public class Student extends Person {
	private int number;
 
    //重写会报错- Cannot override the final method from Person
	//public void eat() {
	//	System.out.println("吃吃吃");
	//}
    //重载
    public void eat(String fruit) {
		System.out.println("吃" + fruit);
	}
}

注意:父类中被private修饰的final方法,在子类中可以有同名的方法,因为private方法无法被子类继承,所以子类中同名的方法是子类特有的,而不是从父类继承来的。

被final修饰的类无法被继承

static关键字

属性
静态属性(类变量)
static修饰的成员变量叫做静态变量(类变量),类变量属于这个类,而不是对象。创建多个某类的对象,多个对象共享一个静态变量,一改全改,当通过某个对象修改过静态变量时,会导致其他对象调用该静态变量时,发现该静态变量已经被修改,一改全改
非静态属性(实例变量)
创建了类的多个对象时,每个对象都独立拥有一套类中的静态属性,当修改其中一个对象的某个非静态属性时,不会改变其他对象中的该属性的值,

特点:
加载时间:静态变量随着类的加载而加载,
调用:静态变量的加载早于对象的创建,new出来的对象之前就能用类名调用静态变量,“类名.静态变量”,实例变量不能通过类调用,
独立性:由于类只会加载一次,所以静态变量在内存中,只存在一份,存在方法区的静态域中,
静态属性一般不在构造器中初始化,

方法
加载:随着类的加载而加载,可以通过“类.静态方法名”,调用,或者“对象.静态方法”,

调用:静态方法中只能调用静态的方法或者属性,而非静态方法可以调用静态或者非静态(和他们的生命周期有关,)(晚出生的可以调用)
静态方法可以通过类名调用,

代码块
静态代码块
随着类的初始化,静态代码块的内容也会执行,
非静态代码块
在类实例化对象时就会执行,

内部类

静态内部类不能调用外部的非静态方法和属性

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值