Python 官方文档:入门教程 => 点击学习
目录方法重写Override重写方法重写小结:总结方法重写与之前的方法重载不同 回顾一下方法重载,相同的方法名不同参数类型和参数数量以及参数顺序 package Demo1; i
方法重写与之前的方法重载不同
回顾一下方法重载,相同的方法名不同参数类型和参数数量以及参数顺序
package Demo1;
import java.util.Arrays;
public class Demo011 {
public static void main(String[] args) {
Demo011 D11=new Demo011();
D11.demo(12,232,43,3); //4个实际参数,则调用第三个demo方法
}
public void demo(int a,int b){
System.out.println(a+b);
}
public void demo(int a,int b,int c){
System.out.println(a+b+c);
}
public void demo(int...ints){
System.out.println(Arrays.toString(ints));
}
}
重写都是方法的重写与属性无关
package Demo1;
public class Demo012 {
public static void main(String[] args) {
B b =new B();
b.demo();
}
}
class A{
public static void demo(){
System.out.println("Ademo");
}
}
class B extends A{
public static void demo(){
System.out.println("Bdemo");
}
}
执行结果:
Bdemo
父类的引用指向子类进行引用
public static void main(String[] args) {
//方法的调用只和数据类型有关
B b =new B(); //调用的是B类的静态方法
b.demo();
//父类的引用指向子类
A a = new A(); //调用的是A类的静态方法
a.demo();
}
执行结果:
Bdemo
Ademo
使用快捷键Alt+insert快速生成重写方法
class A{
public void demo(){
System.out.println("Ademo");
}
}
class B extends A{
@Override //注解,有功能的注释
public void demo() {
super.demo(); //默认调用父类的demo()方法
}
}
使用Override重写默认是调用父类的方法,我们可以在重写方法中调用自己的方法
class A{
public void demo(){
System.out.println("Ademo");
}
}
class B extends A{
@Override
public void demo() {
//super.demo(); 默认调用父类的demo()方法输出Ademo
System.out.println("Bdemo");
}
}
重写之后执行结果:
Bdemo
Bdemo
子类重写父类的demo()方法之后输出为demoB,但是并不是子类重写之后将父类的方法修改了,子类在进行调用的时候调用的是重写后父类的方法
package Demo3;
public class demo005 {
public static void main(String[] args) {
DemoB DB =new DemoB();
DB.demo(); //调用子类的demo
DemoA DA=new DemoA(); //调用父类的demo
DA.demo();
}
}
class DemoA{
public void demo(){
System.out.println("demoA");
}
}
class DemoB extends DemoA{ //继承
@Override
public void demo(){
System.out.println("demoB");
}
}
执行结果:
demoB
demoA
但是我可以完全不继承父类也能输出demoB,demoA
package Demo3;
public class demo005 {
public static void main(String[] args) {
DemoB DB =new DemoB();
DB.demo();
DemoA DA=new DemoA();
DA.demo();
}
}
class DemoA{
public void demo(){
System.out.println("demoA");
}
}
class DemoB{ //A与B没有继承关系
public void demo(){
System.out.println("demoB");
}
}
执行结果:
demoB
demoA
两种方式有什么区别呢?
父类方法若添加static修饰符则重写失败提示错误
进行方法重写时静态方法和非静态方法的区别很大,如果是加了static静态方法,调用结果之和左边定义的类有关。方法重写与非静态方法有关
私有方法无法进行方法重写,重写的关键词只能是public不能是private私有的
为什么需要重写?
快捷键Alt+insert
快速创建Override
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!
--结束END--
本文标题: JavaSE-面向对象(方法重写)
本文链接: https://lsjlt.com/news/132261.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0