17道Java基础面试题!收藏吃灰!( 六 )


重载(Overloading):
1、 方法重载是在同一个类中定义多个具有相同方法名但参数列表不同(参数类型、数量、顺序等)的方法 。2、 重载方法可以改变返回类型 , 但返回类型并不能用来区分重载方法 。3、 重载方法可以改变访问修饰符 。4、 重载方法可以声明新的或更广的检查异常 。
重写(Overriding):
1、 方法重写是子类定义了一个与父类方法签名(方法名和参数列表)完全相同的方法 。2、 重写方法不能改变返回类型 , 但是从Java 5开始 , 子类可以通过协变返回类型 , 返回父类方法返回类型的子类型 。3、 重写方法不能改变访问修饰符 , 子类中的方法访问级别不能低于父类中的方法 。例如 , 如果父类方法被声明为public , 那么在子类中重写该方法也必须是public 。4、 重写方法不能声明新的或更广的检查异常 , 只能声明更少、更窄的或者完全不声明 。
总结一下 , 重载发生在一个类中 , 同名方法有不同的参数列表 。而重写发生在父类和子类之间 , 子类有一个与父类的方法签名完全相同或者兼容(协变返回类型)的方法 。
main()方法可以重载吗?Java的main()方法可以被重载 。main()方法只是一个特殊的方法 , 因为它被Java运行时环境用作程序的入口点 。然而 , 它仍然是一个正常的静态方法 , 可以像其他静态方法一样被重载 。
主要要记住的是 , 当运行一个Java程序时 , JVM只会调用形式参数为单一字符串数组的main()方法 。这个版本的main()方法被称为程序的入口点 。其他被重载的main()方法并不会被自动调用 , 但可以手动在程序中调用它们 。
例如 , 下面是一个main()方法的重载示例:
public class MainMethodOverload {// JVM调用的入口方法public static void main(String[] args) {System.out.println("main with String[]");}// 重载的main方法public static void main(String arg) {System.out.println("main with String");}// 另一个重载的main方法public static void main() {System.out.println("main without args");}}在这个例子中 , 如果运行这个程序 , JVM只会调用第一个main()方法 。然而 , 可以在第一个main()方法中调用其他两个main()方法 , 如下所示:
public static void main(String[] args) {System.out.println("main with String[]");main("a string arg");main();}这样 , 当运行程序时 , 所有的main()方法都会被调用 。
什么是 multi-catch?在Java 7及以后版本中 , 一个新的异常处理特性被引入 , 称为"multi-catch" , 也被称为"catch多个异常" 。
在早期的Java版本中 , 如果想在一个catch块中处理多种类型的异常 , 、需要为每种异常类型都写一个单独的catch块 。这可能会导致重复的代码 , 因为每个catch块可能会进行相同的错误处理 。以下是一个例子:
try {// code that may throw exceptions} catch (IOException ex) {ex.printStackTrace();} catch (SQLException ex) {ex.printStackTrace();}在这个例子中 , 两个catch块都做了同样的事情:打印异常的堆栈跟踪 。
然而 , 从Java 7开始 , 、可以在一个catch块中捕获多种类型的异常 。这可以通过在catch语句中使用管道符(|)分隔的异常类型来实现 。以下是一个例子:
try {// code that may throw exceptions} catch (IOException | SQLException ex) {ex.printStackTrace();}在这个例子中 , 一个catch块处理了IOException和SQLException两种类型的异常 。如果try块中的代码抛出这两种类型的任何一种异常 , catch块都会捕获到 , 并执行相同的错误处理代码 。这可以减少重复的代码 , 并使异常处理代码更容易阅读和维护 。
需要注意的是 , multi-catch中引用的异常变量隐式为final , 因此不能被修改 。
GET , POST请求之间的区别?HTTP协议定义了许多方法 , 其中最常用的就是GET和POST 。这两种方法有很多重要的区别:
1、 数据传输方式:GET请求的数据是附加在URL上的 , 以参数形式出现 。POST请求的数据则放置在HTTP请求体中 。这意味着GET请求的数据可以直接在浏览器地址栏中看到 , 而POST请求的数据则不会 。
2、 数据大小:由于GET请求的数据被附加在URL上 , 因此其数据大小受到URL长度限制 , 一般不超过2KB 。而POST请求的数据则没有这种限制 。这意味着GET请求适合传输简单的查询参数 , 而POST请求适合传输大量或复杂的数据 。


推荐阅读