一、访问修饰符
Java中访问修饰符是用于控制访问资源的权限(类、属性和方法)。关键字有private、default(不写访问修饰符时)、protected、public。
访问权限如下表:
访问权限 访问修饰符 |
同一类 | 同一包 | 子类 | 所有类 |
---|---|---|---|---|
private | √ | |||
default (不写访问修饰符时) |
√ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
private修饰的属性,如需使用一般设置用public修饰的set和get方法。
class Person{
private String name;
//设置工开的get方法来读取姓名
public String getName() {
return this.name;
}
//设置公开的set方法来修改姓名
public void setName(String name) {
this.name = name;
}
}
二、方法的重写(Override)
1、定义
子类继承父类的方法,但是父类方法不满足子类需求,需重写子类继承的父类的方法。
2、重写的条件
(1)有继承关系:子类继承自父类;
(2)父类方法无法满足子类要求。
3、重写的要求
(1)重写方法的签名与父类保持一致:方法名+形参列表;
(2)访问修饰符:子类>父类(子类比父类的开放程度大);
(3)返回值:
1)返回值是基本数据类型时:子类和父类相同;
2)返回值是引用数据类型时:子类小于父类,例如:在子类方法中的返回值为子类对象,则不能返回父类的对象。
例:此处只能返回Son():
4、注意
(1)父类的静态方法(用static修饰)和用final修饰的方法不能被重写;
(2)可以在重写方法上一行标记@Override ;可轻松判定该方法是否为重写,不是重写就要报错。
三、super关键字
1、作用
2、super与this的区别
Super和this都是为了便于使用继承链上的资源,其区别如下:<br />(1)this检索顺序:当前类——》父类——》父类的父类;<br />(2)super检索顺序:父类——》父类的父类;
3、super使用要点
(1)在子类中调用因子类方法重写被覆盖的父类——常用;
(2)调用父类的构造器;位于构造器代码第一句。
(3)调用父类被覆盖的属性—— 一般不用;
四、Object类方法的重写
Object类(超类)中有一些常用方法,但是一般不符合我们的使用需求,我们使用时需重写。
1、toString方法的重写
(1)原生方法:返回对象的路径+@+哈希码的十六进制数。
(2)重写时:返回String类型,根据自己需求,返回自己需要的信息(输出时注意拼接)。
(3)方法名:public StringtoString(){ };
2、hashCode方法的重写
(1)原生方法:返回对象的哈希码地址,是一个整数;
(2)重写时:注意如果是字符串需调用原方法生成整数,整数型和字符型可直接拼接。如:
public int hashCode() {
returnthis.name.hashCode()+this.age+this.sex+this.id;
}
3、equals方法的重写
(1)原生方法:比较两个对象的引用地址;
(2)重写时:根据自己的需求产生判断条件。注意对象的转型。
(3)例题:
public boolean equals(Object obj) {
Useruser = (User)obj;
if(this==user) {
return true;
}else if(this.ID==user.ID) {
return true;
}else {
return false;
}
}
五、final关键字
用final修饰:
1、修饰变量:表示为常量,值不可更改,命名使用大写;fina int a= 10;
2、修饰方法:父类方法被子类继承后不能被重写;public fian void test( ){ };
3、修饰类:表示该类不能被继承,一般用的较少。final class Person{ }