重写和重载的异同

重写(覆盖)的规则:
1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。
3、重写的方法的返回值必须和被重写的方法的返回一致或者兼容;
4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;
5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写;
6、静态方法不能被重写为非静态的方法(会编译出错);
7、父类方法被final时,无论该方法被public、protected及默认所修饰,子类均不能重写该方法。

overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。
重载的规则:
1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);
2、不能通过访问权限、返回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造成影响。

联系与区别
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、面向对象的特征有哪些方面? 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? 4、float f=3.4;是否正确? 5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗? 6、Java有没有goto? 7、int和Integer有什么区别? 8、&和&&的区别? 9、解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。 10、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少? 11、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 12、用最有效率的方法计算2乘以8? 13、数组有没有length()方法?String有没有length()方法? 14、在Java中,如何跳出当前的多重嵌套循环? 15、构造器(constructor)是否可被重写(override)? 16、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 17、是否可以继承String类? 18、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 19、String和StringBuilder、StringBuffer的区别? 20、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分? 21、描述一下JVM加载class文件的原理机制? 22、char 型变量中能不能存贮一个中文汉字,为什么? 23、抽象类(abstract class)和接口(interface)有什么异同? 24、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 25、Java 中会存在内存泄漏吗,请简单描述。
一卷 一、简答题 1. 什么是类?什么是对象? 2. 方法的重载和覆盖(重写)有什么区别? 3. 简述抽象类与接口的异同。 4. 简述JDBC访问数据库的步骤。 二、编程题 1. 定义一个类Circle,计算并输出圆(半径=3)的面积 2. 在D盘创建文件test.txt,文件中的内容为Hello,world!,然后利用输入流输出流把文 件拷贝到E盘根目录下。 卷一答案 一、简答题1. 什么是类?什么是对象? 类是对某一类事物的描述,是抽象的、概念上的定义; 对象是实际存在的该类事物的每个个体,也称实例。 2. 方法的重载和覆盖(重写)有什么区别? 方法的重载重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后 者实现的是运行时的多态性。 重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不 同或者二者都不同)则视为重载重载对返回类型没有特殊的要求。 重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回 类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常。 3. 抽象类与接口的异同 抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。 一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实 现,否则该类仍然需要被声明为抽象类。 接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法, 而接口中不能定义构造器而且其中的方法全部都是抽象方法。 抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是 public的。 抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的 类必须被声明为抽象类,而抽象类未必要有抽象方法。 4. 简述JDBC访问数据库的步骤 a) 加载JDBC驱动程序 b) 建立数据库连接 c) 创建Statement对象 d) 执行SQL语句 e) 处理返回结果 f) 关闭创建的对象 二、编程题 1. public class Circle { double radius; public Circle(double r){ radius=r; } public double area(){ return 3.14*r*r; }(8分) public static void main(String[] args) { Circle c=new Circle(3); System.out.println("圆的面积是"+c.area()); } }(7分) 2. public class FileCopy { public static void main(String[] args) { try { FileInputStream in=new FileInputStream("d:\\test.txt"); FileOutputStream out=new FileOutputStream("e:\\test.txt"); int c; while((c=in.read())!=-1){ out.write(c); } in.close(); out.close(); } catch (Exception e) { e.printStackTrace(); } } } 卷二 一、选择题 1.Java程序的跨平台特性是由( )支持的。 A.JVM B.编译器 C.IE浏览器 D.面向对象 2.下面定义一个整型数组,不合法的是( )。 A.int array[][]=new int[2][3]; B.int array[][]=new int[6][]; C.int [][]array=new int[3][3]; D.int [][]array=new int[][4]; 3.Java中,访问修饰符限制性最高的是( )。 A.private B.protected C.public D.friendly 4.关键字supper的作用是( )。 A.用来访问父类被隐藏的成员变量 B.用来调用父类中被重载的方法 C.用来调用父类的构造函数 D.以上都是 5.下面关于类及其修饰符的一些描述,不正确的是( )。 A.abstract只能用来派生类,不能创建abstract类的对象 B.final修饰的类不能用来派生子类 C.abstract可与final同时修饰一个类 D.abstract方法必须在abstract类中声明,但abstract类定义中可以没有abstract方法 6.下面( )关键字用来标明一个方法可能抛出各种异常。 A.try B.throws C.throw D.catch 7.下面用于创建动态数组的集合类是(

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值