自定义一个工具类(加入文档注释 javadoc -d 目录名 -author -version XXX.java)--->API文档说明书
)将这个类的无参构造方法私有化,目的:外界不能创建对象了
2)将这个类中的所有的功能,全部静态static修饰
工具类名.方法名() ;
子类继承父类,只能继承父类非私有的成员,私有的成员只能间接通过公共方法访问
在Java语言中,类与类之间,只支持单继承,不支持多继承!
继承的特点:
1)在Java中,类与类之间的继承关系,只支持单继承,不支持多继承!
在别的语言中,可能支持多继承,class 子类名 extends 父类名1,父类名2,..{}
2)在Java中,类与类之间虽然不能 多继承,但是可以 多层继承!
在继承中,成员变量访问问题!
1)子类继承父类,如果子类的成员变量名称和父类的成员变量名称不一致的情况:
比较简单,分别访问即可
2)子类继承父类,如果子类的成员变量名称和父类的成员变量名
名称一致的情况:
a)现在本类的局部位置找,有没有这个变量,如果有就直接使用
b)如果本类的局部位置没有,在本类的成员位置中找,如果有,就使用
c)如果本类的成员位置没有,在它的父类的成员位置找,如果有,就使用
d)父类的成员位置都没有这个变量,压根不存在,就报错!
遵循一个原则:"就近原则"
继承关系中,构造方法的访问
子类继承父类,不能够继承构造方法,但是可以通过super()(等会讲)间接访问父类的构造方法,让父类先进行初始化
子类的所有构造方法都默认访问父类的无参构造方法:子类的每一个构造方法的第一句话:super();
super:代表的是父类的空间标识(代表父类的对象的地址值引用)
为什么要去让父类初始化呢?
因为子类继承父类,
可能会使用到父类的数据!所有必须先让父类初始化,然后子类在初始化(分层初始化)
在写父类的时候:在继承中由于存在默认的访问问题,建议永远给出父类的无参构造方法
1) 继承中的分层初始化
子类继承父类
Zi zi = new Zi() ;-- 子类的构造方法: class Zi extends Fu{}
需要让父类先初始化----先执行父类构造方法,然后才是子类的构造方法!
2)
继承关系中,成员变量访问问题 :如果子类继承父类,成员变量名称都一致, 就近原则
需要现在子类的局部位置找,有就使用
没有,在子类的成员位置找,有就使用
没有,在父类的成员位置找,有就使用
this和super的区别
this:代表的本类对象的地址值引用
super:代表的父类空间标识(父类对象的地址值引用)
this.变量:访问的本类的成员变量
this.方法名():访问的本类的成员方法
this()/this(xx):访问本类的无参构造方法/访问的本类的有参构造方法
super.变量名:访问的是父类的成员变量
super.方法名():访问的父类的成员方法
super()/super(xx):访问的父类的无参构造方法/访问的父类的有参构造方法
方法重载overLoad和方法重写override的区别?
*方法重载:定义方法的时候,如果多个方法的方法名相同,参数列表不同,与返回值无关
* 参数列表不同:
* 参数个数不同
* 参数类型不同
*
* public boolean compare(int a,int b){}
* public boolean compare(float a,float b){}
*
*
* 方法重写:override:
* 子类继承父类,出现了和父类一模一样的方法声明(权限,返回值,方法名,参数列表都相同),方法覆盖
* 为了将父类的功能覆盖掉,使用自己的功能!
final:最终的,无法更改的
* 可以修饰类,该类不能被继承
* ,可以修饰变量,此时这个变量是一个常量:自定义常量
* 此时这个变量只能被赋值一次,再次赋值,报错!
* 可以修饰方法,
* 此时这个方法不能被重写!
继承的中的另一个注意事项
* 不要为了使用部分功能,而使用继承!