黑马程序员_函数的两个特性(重写和重载)

来源:互联网 发布:离线看书软件 编辑:程序博客网 时间:2024/06/16 20:52

------- android培训、java培训、期待与您交流! ----------

函数的两个特性(重写和重载)

第一部分

1、重载的概念

在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。换句话说重载和参数列表有关系,与返回值类型没有关系;

2、重载的特点

与返回值类型无关,只看参数列表。

3、重载的好处

方便于阅读,优化了程序设计。

4、什么时候使用重载

当定义的功能相同,但是参与运算的位置内容不同,那么这时就要定义一个函数名称以表示其功能,方便阅读而通过参数列表的不同来区分多个同名函数;

5、代码体现


class  FunctionOverload{public static void main(String[] args) {//函数名相同但是参数列表不同;这就是重载add(5,7);add(3,5,54);System.out.println("Hello World!");}//获取两个整数的和public static int add(int a,int b){return a+b;}//获取三个整数的和public static int add(int a,int b,int c){return a+b+c;}}<strong></strong>

第二部分

1、背景

当子类中的方法名和父类中方法名是一样的时候,在主函数中创建子类对象,并调用父类的方法的时候,这是发现运算的结果是子类中的方法,父类中的方法并没有运行;

2、重写的概念

当子类出现和父类一模一样的函数时,子类中的对象调用该函数,会运行子类函数的内容,如同父类的函数被覆盖一样,这种情况就是函数的另一个特性:重写又成为覆盖;

3、覆盖的应用

当子类继承父类,沿袭了父类的功能,到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致,这时就没有必要定义新功能,而是使用覆盖特性,保留父类的功能定义,并重写功能内容。

4、覆盖的特点

沿袭父类内容,定义子类特有内容;

5、覆盖功能的好处

5.1、有利于功能扩展;

5.2、在子类覆盖方法中,继续使用被覆盖的方法可以通过super.函数名获取。

5.3、父类中的私有方法不可以被覆盖。

6、覆盖的注意事项

6.1、子类覆盖父类时,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。
6.2、静态只能覆盖静态,静态不能覆盖非静态,原因是静态在内存中是先加载的,而非静态是后加载进内存的;

7、代码体现

class Fu{void show(){System.out.println("show fu");}void speak(){System.out.println("vb");}}//子类继承父类,通过覆盖后子类中就有了两个方法;class Zi extends Fu{//子类和父类speak的功能是相同的void speak(){System.out.println("java");}void show(){System.out.println("show zi");}}class ExtendsDemo3 {public static void main(String[] args) {//建立子类对象,调用父类方法;Zi z = new Zi();z.show();z.speak();}}<strong></strong>


第三部分

重载和重写的区别

重载:只看同名函数的参数列表;
重写:子父类方法要一模一样,包括返回值类型;

第四部分

我的总结

1、重写是函数名相同,但是函数的参数列表不同,与返回值类型无关;
2、重载是子类和父类中的方法相同,子类中的方法覆盖父类中的方法,沿袭父类功能到子类中,在主函数中建立子类对象,调用父类方法;
3、在进行复写是时候,必须保证子类的修饰符权限要大于父类的修饰符权限,才能够复写;
4、静态只能覆盖静态,静态不能覆盖非静态;

0 1