【学习笔记】
【has a 谁有谁 车有轮子】【 isa 谁是谁 形状是正方形,车是小轿车】【 like a谁像谁】------------【小方法要单独提出来】
方法的重写
接口
OOP小结
-------
集合
异常
JDBC
-------------------------------------------------------------------------------------------------------------------------
一、【方法重写】
重写与重载的区别:
重载:在同一个类里面,方法名完全一样,参数列表不一样
重写:要求在【子类】中对【父类】的方法实现进行重写
语法特征:
(1)子类的方法名与父类的方法名要一致,
(2)参数列表(数量和对应位置的数据类型)也要一致
(3)子类方法的返回值类型和父类方法的返回值类型要么一致,要么前者(子)的类型是后者(父)类型的子类(JDK5后)
(4)在重写的时候子类方法的访问修饰符不能比父类的小(可以更大或一样)
(5)子类子类声明抛出的异常范围不能比父类的大(待续)
限制:私有方法不可以被重写,静态方法不可以被重写,final修饰的方法不可被重写
注解@Override 加在重写的方法上时,当方法不属于重写时会报错
*********模板方法设计模式**********(了解)
*单利**工厂**模板方法*
在实战中常用重写方法:直接将子类的方法与父类的方法保持一致(直接敲父类的方法名 根据提示)
-------------------------------------------------------------------------------------------------------------------------
二、【针对object来重写子类的方法】
1、println():该方法会【自动调用】参数的toString();--------当内容是实例时会显示哈希值,
找一个方法时,子类中没有时会到父类去找
returngetClass().getName() + "@" + Integer.toHexString(hashCode());
类.类名 得到哈希值
----------------------String内容比较用equals比较稳定 特殊情况也能用“==” 推荐使用equals-----------------------------
例:Strings1="abc"; Strings2="a"+"b"+"c" s1==s2 ==>true (面试考的常量值,速度更快)
2、eqauls():在object中默认是与==一样的,在开发中一般会重写该方法,实现自己的比较逻辑
面试题:equals与==的区别
hashCode(),clone():待续 哈希和克隆
--------------------------------------------------------------------------------------------------------------------------
三、【final关键字】
修饰一个变量:局部变量里声明一个final可以先声明后赋初值(只能一次),在类中(全局)在声明的同时就必须赋初值。
命名规则:全大写命名
--------------------当用final修饰一个实例的话,可以修改里面的属性,但不能重新使用构造方法,因为在实例化的时候赋了地址,地址不能更改-----------
修饰一个方法:该方法不可被子类重写
修饰一个类:不能被子类继承
JDK中常见的final类:String
-------------------------------------------------------------------------------------------------------------------------------------------
四、【访问控制修饰符】
public:公共的全局的,包包之间 ---如果一个类是public 在另一个包中new的时候要构造方法也要public 不然没法new出来(不允许new的就是单利模式)
protected:受保护的,同一个包中可以访问,可以在任何子类(有可能不是同一个包)中访问==>
默认:同一个包中的代码可以访问
private:私有的