应用场景:当一个类中存在多个方法实现的功能相似,则可以使用方法重载机制,使得方法使用上如同一个方法。
构成方法重载的条件:
-
重载的方法都在同一个类当中
-
方法名相同
-
参数列不同(数量,顺序,数据类型)
-
注意:构成方法重载与修饰符列表和返回值类型无关
2.方法重写/覆盖(Override/Overwrite)
当子类重复类中继承的方法无法满足子类的功能需求时,可以使用方法重写,父类原有的方法在子类中将被覆盖,不存在了。
-
存在继承关系,子类重写父类中的方法
-
重写方法返回值类型,参数列表,方法名均相同
-
重写的方法访问全选可以更低,不可以更高
-
重写的方法抛出的异常的异常可以更少,不可以更多
-
注意:
-
子类重写父类中的方法只能重写一次
-
对于父类中的私有方法(被private修饰),子类不可以对进行方法重写(其实也可以理解为私有方法只能在本类中访问,因此不能在子类中对其进行任何操作)
-
子类不可以重写父类的构造方法
-
3.方法的递归调用
递归算法的数据结构类似于栈操作,栈顶的方法最先调用/执行,栈底的方法最后调用/执行
/*方法的递归调用:即有个方法调用自身
* 注意:
* 1.递归调用无尽头,会造成栈溢出错误
* 2.递归调用能不调用就不要使用。
* */
class Myclass01{
public void mht01(){
System.out.println("mth01begin");
mht01();//方法的递归调用
System.out.println("mth01end");
}
}
经点的递归算法:
-
计算1~n的和:
/*不使用递归算法计算1-n的和*/
public static int sum(int n){
int result=0;
for(int i=0;i<=n;i++){
result+=i;
}
return result;
}/*使用递归算法计算1-n的和*/
public static int s (int n){
if(n==1){
return 1;
}
return n+sum(n-1);
} -
计算n 的阶层
/*不使用递归计算n的阶层*/
public static int mth04(int n){
int result=1;
for(int i=1;i<=n;i++){
result=result*i;
}
return result;
}/*使用递归算法计算n的阶层*/
public static int mth05(int n){
if(n==1){
return 1;
}
return n*mth05(n-1);
}
4.面向对象与面向过程的区别
面向对象:关注独立体能够完成哪些功能,具有低耦合,高扩展的特点
面向过程:关注类的具体实现细节,具有因果有关系,导致高耦合,低扩展的特点
-
注意:面向过程和面向对象并没有完全清晰的界限,面向对象中也存在面向过程,面向对象需要面向过程来连接,从而又组成另一个大对象。
5.面向对象的三大特征
-
封装(jar包)
-
继承(子类继承父类)
-
多态(子类脱离父类固有的东西)
6.面向对象方式开发一个软件的生命周期
-
面向对象分析:OOA(analize)
-
面向对象设计:OOD(design)
-
面向对象编程:OOP(programe)
7.类和对象
类:抽象的概念,现实世界中并不存在,它描述的一个事物的状态(属性)和动作(方法)
对象(实例):现实生活中真实存在的事物
二者之间的联系:
类是对象的抽象,将几个对象上共同特征抽象出来便可以构成一个类,即类是对象的抽象
对象是类的具体,一个类的不同特征具体到不同对象的时候最终的结果不一样。是类的实例化的结果
类------>对象(instance) :实例化过程
对象(instance)-------->类:抽象过程