一、访问修饰符

Java中访问修饰符是用于控制访问资源的权限(类、属性和方法)。关键字有private、default(不写访问修饰符时)、protected、public。
访问权限如下表:

访问权限
访问修饰符
同一类 同一包 子类 所有类
private
default
(不写访问修饰符时)
protected
public

private修饰的属性,如需使用一般设置用public修饰的set和get方法。

  1. class Person{
  2. private String name;
  3. //设置工开的get方法来读取姓名
  4. public String getName() {
  5. return this.name;
  6. }
  7. //设置公开的set方法来修改姓名
  8. public void setName(String name) {
  9. this.name = name;
  10. }
  11. }

二、方法的重写(Override)

1、定义

子类继承父类的方法,但是父类方法不满足子类需求,需重写子类继承的父类的方法。

2、重写的条件

(1)有继承关系:子类继承自父类;
(2)父类方法无法满足子类要求。

3、重写的要求

(1)重写方法的签名与父类保持一致:方法名+形参列表;
(2)访问修饰符:子类>父类(子类比父类的开放程度大);
(3)返回值:
1)返回值是基本数据类型时:子类和父类相同;
2)返回值是引用数据类型时:子类小于父类,例如:在子类方法中的返回值为子类对象,则不能返回父类的对象。
例:此处只能返回Son():
20180929面向对象 访问修饰符 方法的重写 super关键字 Object类方法的重写 final关键字 - 图1

4、注意

(1)父类的静态方法(用static修饰)和用final修饰的方法不能被重写;
(2)可以在重写方法上一行标记@Override ;可轻松判定该方法是否为重写,不是重写就要报错。

三、super关键字

1、作用

用于方便访问继承链上的资源

2、super与this的区别

  1. Superthis都是为了便于使用继承链上的资源,其区别如下:<br />(1this检索顺序:当前类——》父类——》父类的父类;<br />(2super检索顺序:父类——》父类的父类;

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{ }