java语言 百分网手机站

override和Java overload的定义及异同点分析

时间:2020-11-30 18:57:43 java语言 我要投稿

override和Java overload的定义及异同点分析

  方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。

  如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。

  如果在一个类中定义了多个同名的方法,它们或有不同的`参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。不能通过访问权限、返回类型、抛出的异常进行重载.

  1.方法重载(overload)

  概念:简单的说:方法重载就是类的同一种功能的多种实现方式,到底采用哪种方式,取决于调用者给出的参数。

  注意事项:

  (1)方法名相同

  (2)方法的参数类型、个数、顺序不至少有一项不同

  (3)方法返回类型可以不同

  (4)方法的修饰符可以不同

  如果只是返回类型不一样,不能够构成重载

  如果只是控制访问修饰符号不一样,也是不能构成重载的

  Overloaded的方法是可以改变返回值的类型。

  2.方法覆盖(override)

  概念:简单的说:方法覆盖就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样,那么我们就说子类的这个方法覆盖了父类的那个方法。

  注意事项:方法覆盖有很多条件,总的讲有两点一定要注意:

  (1)子类的方法的返回类型,参数,方法名称,要和父类方法的返回类型,参数,方法名称完全一样,否则编译出错。

  (2) 子类方法不能缩小父类方法的访问权限(反过来是可以的)

  例:

  Overrride实例

  复制代码 代码如下:

  class A{

  public int getVal(){

  return(5);

  }

  }

  class B extends A{

  public int getVal(){

  return(10);

  }

  }

  public class override {

  public static void main(String[] args) {

  B b = new B();

  A a= (A)b;//把 b 强 制转换成A的类型

  int x=a.getVal();

  System.out.println(x);

  }

  }

  Overload实例

  package com.guonan;

  //Demostrate method voerloading.

  class OverloadDemo {

  void test(){

  System.out.println("NO parameters");

  }

  void test(int a){

  System.out.println("a:"+a);

  }//end of Overload test for one integer parameter.

  void test(int a, int b){

  System.out.println("a and b:"+a+" "+b);

  }

  double test(double a){

  System.out.println("double a:"+a);

  return a*a;

  }

  }

  class Overload{

  public static void main(String[] args) {

  OverloadDemo ob = new OverloadDemo();

  double result;

  ob.test();

  ob.test(10);

  ob.test(10, 20);

  result = ob.test(123.25);

  System.out.println("Result of ob.test(123.25):"+result);

  }

  }

【override和Java overload的定义及异同点分析】相关文章:

1.Java多线程的定义状态和属性

2.java中定义常量的方法及介绍

3.Java的应用及前景分析

4.Java中定义与声明的区别

5.Java的异常机制分析及处理办法

6.Java数据类型以及变量的定义

7.Java自定义范型的应用技巧

8.分析Java内存分配的栈和堆以及常量池