this
含义
代表当前对象的地址
作用
可以用于指定访问当前的成员变量和成员方法
下面举个例子
//this关键词在有参构造器的作用
public car(String name, double price) {
/*
* 如果通过name=name赋值,则会无法实现对car对象的内容进行赋值
* 但通过引入this关键词则会解决该问题
*
* */
this.name = name;
this.price = price;
}
//this 在成员变量中的用法
public void competition(String name){
/*
* 如果没用引入This关键词则会使得两个name的值相同
* */
System.out.println(this.name+"和"+name+"比赛");
}
//this关键词调用本类的构造器
//实现如果没有给name赋值,name的默认值为构造器中的设置值
public car(double price){
this("宝马",price);
}
static
含义
static是静态的意思,用来修饰成员变量和成员方法
static修饰成员变量表示该成员变量只在内存中存储一份,可以被共享访问,修改
静态成员变量
静态成员变量可以通过类名直接访问,但是也支持通过对象访问。一般都通过直接用类名访问的方式,更为简单,快捷。
静态成员方法
同样也是支持类名和对象名的访问,也一般以直接采用类名访问为主。同一个类中,调用不需要类名,可以直接访问
静态方法只能访问静态成员,不可以直接访问实例成员
静态方法中不能出现this关键词
static关键词的一些应用
静态代码块
格式:static{}
特点:随着类的加载而加载,自动触发,只执行一次
作用:在类加载的时候做一些静态数据的初始化操作,以便后续使用。
super
作用
访问父类的构造器
访问父类的非私有的属性和方法
//父类
public class transport {
String name;
double price;
public transport(String name, double price) {
this.name = name;
this.price = price;
}
public transport() {
}
//子类,调用父类的构造器
public class ship extends transport{
public ship( String name,double price){
super(name,price);
}
}
}
tips
super和this不能都是运用与同一个构造器中,因为super和this都需要放在构造器的第一行,要在一开始就将调用的构造器的初始化。
权限修饰符
public
可实现不同包下的任意类的调用
protected
可实现不同包下的子类调用(子类访问权限)
一定要是子类对象才可以访问
缺省
可实现同一个包下的任意子类调用(包访问权限)
private
可实现同一个类中的调用
final
修饰类:表示该类为最终,无法被继承
修饰方法:表示该方法为最终方法,无法被重写
修饰变量:表示该变量有且只能被赋值一次
final修饰的变量的数据值不能发生改变,储存的地址不可以发生改变,但是地址指向的内容对象是可以发生改变的
常量
是指用 public static final修饰的成员变量且必须要有初始值
命名规范:全部为大写子母,单词之间采用下划线连接
常量的执行原理
在编译阶段会进行宏替换,将使用常量的地方全部替换为真实的字面值。
我觉得和c语言中的宏定义类似。
abstract
abstract修饰类,这个类就是抽象类,修饰方法就是抽象方法
abstract不能修饰变量,代码块,构造器
抽象方法只能有方法签名,不能声明方法体
一个类中如果定义了抽象方法,这个类必须声明为抽象类
一个类如果继承了抽象类,则它必须实现抽象类中所有的抽象方法
抽象类不能创建对象
final和abstract为互斥关系,即二者不能同时修饰一个类或方法,因为final修饰的无法被继承,而abstract修饰的只能被继承。