第六种 , 还可以为 args 参数添加 final 关键字:
第七种 , 最复杂的一种 , 所有可以添加的关键字统统添加上:
当然了 , 并不需要为了装逼特意把 main() 方法写成上面提到的这些形式 , 使用 IDE 提供的默认形式就可以了 。
18、Java 的重写(Override)和重载(Overload)有什么区别?
先来看一段重写的代码吧 。
重写的两个方法名相同 , 方法参数的个数也相同;不过一个方法在父类中 , 另外一个在子类中 。 就好像父类 LaoWang 有一个 write() 方法(无参) , 方法体是写一本《基督山伯爵》;子类 XiaoWang 重写了父类的 write() 方法(无参) , 但方法体是写一本《茶花女》 。
来写一段测试代码 。
大家猜结果是什么?
在上面的代码中 , 们声明了一个类型为 LaoWang 的变量 wang 。 在编译期间 , 编译器会检查 LaoWang 类是否包含了 write() 方法 , 发现 LaoWang 类有 , 于是编译通过 。 在运行期间 , new 了一个 XiaoWang 对象 , 并将其赋值给 wang , 此时 Java 虚拟机知道 wang 引用的是 XiaoWang 对象 , 所以调用的是子类 XiaoWang 中的 write() 方法而不是父类 LaoWang 中的 write() 方法 , 因此输出结果为“小王写了一本《茶花女》” 。
再来看一段重载的代码吧 。
重载的两个方法名相同 , 但方法参数的个数不同 , 另外也不涉及到继承 , 两个方法在同一个类中 。 就好像类 LaoWang 有两个方法 , 名字都是 read() , 但一个有参数(书名) , 另外一个没有(只能读写死的一本书) 。
来写一段测试代码 。
这结果就不用猜了 。 变量 wang 的类型为 LaoWang , wang.read() 调用的是无参的read() 方法 , 因此先输出“老王读了一本《Web全栈开发进阶之路》”;wang.read(\"金瓶\") 调用的是有参的 read(bookname) 方法 , 因此后输出“老王读了一本《金瓶》” 。 在编译期间 , 编译器就知道这两个 read() 方法时不同的 , 因为它们的方法签名(=方法名称+方法参数)不同 。
简单的来总结一下:
1)编译器无法决定调用哪个重写的方法 , 因为只从变量的类型上是无法做出判断的 , 要在运行时才能决定;但编译器可以明确地知道该调用哪个重载的方法 , 因为引用类型是确定的 , 参数个数决定了该调用哪个方法 。
2)多态针对的是重写 , 而不是重载 。
- 如果在一个类中有多个相同名字的方法 , 但参数不同 , 则称为方法重载 。
- 父类中有一个方法 , 子类中有另外一个和它有相同签名(方法名相同 , 参数相同、修饰符相同)的方法时 , 则称为方法重写 。 子类在重写父类方法的时候可以加一个@Override 注解 。
可以 , 一个类中可以有多个名称为“main”的方法:
但该类在运行的时候 , 只会找到一个入口 , 即 public static void main(String[
args) 。
20、一个 Java 源文件中有多个 public 类吗?
一个 Java 源文件中不能有多个 public 类 。
21、什么是 Java 的 package(包)?
在 Java 中 , 我们使用 package(包)对相关的类、接口和子包进行分组 。 这样做的好处有:
- 使相关类型更容易查找;
- 避免命名冲突 , 比如说 com.itwanger.Hello 和 com.itwangsan.Hello 不同;
- 通过包和访问权限控制符来限定类的可见性 。
- 本文转自:新民晚报在这段日子里医务工作者们坚守在抗疫一线在核酸检测工作量激增的同时物资需...|8000人社区封控后,“黑科技”来帮忙!无人车精准
- iPhone|荣耀Magic4和小米12对比:哪一款更值得入手?
- 本文转自:中国新闻网新冠一体化核酸检测盒。|20个硬核项目现场对接 “黑科技”赋能成都大运会
- 打着小米的旗号卖产品,深圳“小米”被告了,赔了3000万
- 固态硬盘|首创SSD塞进手机!曝小米商城将开启黑鲨5预售:骁龙8游戏旗舰
- 欧洲市场小米正式“接棒”华为,谁也没想到,一切来得这么快
- 本文转自:上观为有效阻断疫情传播链|封闭管理,这家汽车电子高科技企业生产有序
- 人工智能作为新一轮科技革命和产业革命的重要驱动力量|2022人工智能教育蓝皮书:现状、挑战与发展建议
- 网易云音乐|团队超1000人,2024年上市:小米汽车团队进步这么大!
- 3月24日消息|耗资超4000万!小米集团宣布:回购340.94万股股票