zoukankan      html  css  js  c++  java
  • java父类与接口有相同的方法

      这是java多态的一个体现,如果一个类classA继承了类classB,有实现了接口interfaceA,并且接口中有方法funA(),且父类classB中也有funA(),那么对于classA来说既可以重写这个方法也可以不重写。

    父类:

    public class MySuperClass {
        public int getData(){
            return 100;
        }
    }

    接口:

    public interface MyInterface{
        public int getData();//与父类重名的方法
        public void todosomethings();
    }

    子类:

    public class MyTest extends MySuperClass implements MyInterface{
        public static void main(String[] args) {
            MyTest mt = new MyTest();
            System.out.println(mt.getData());
            MySuperClass msc = new MyTest();
            System.out.println(msc.getData());
        }
    
        @Override
        public void todosomethings() {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public int getData() {
            // TODO Auto-generated method stub
            return 10;
        }
        
    }

    当继承父类并且同时实现接口的时候会自动提示实现接口独有的方法todosomethings(),并不提示要实现getData()方法,如果此时测试执行getData将会调用父类的方法。
    如果选择自己重写getData方法,那么就会执行自己重写的方法。多态:父类引用指向了子类对象,如何理解这句话父类引用是"MySuperClass msc" 这句话定义了msc这个引用,

    但是它指向的的(=)却是子类的对象 new Mytest(),因此栈空间里的msc指向了堆空间里的Mytest,当执行getData()方法的时候java的JVM会先找子类是否重写了这个方法,如果没有才会执行父类的方法。

    因此执行的结果是:

    10

    10

    这个只不过是自己的流水账,偶尔有一些心得,错误的地方概不负责
  • 相关阅读:
    查看和修改PATH环境变量(Linux通用)
    Linux文件权限
    配置WAMP完美攻略
    Windows命令行
    Python中的import可以搜索到哪些路径
    查看Python安装路径
    移动端触摸事件及对象
    CSS3动画(360度旋转、旋转放大、放大、移动)
    如何让滚动条始终保持在底部
    第一个markdown
  • 原文地址:https://www.cnblogs.com/ashitaka/p/6066527.html
Copyright © 2011-2022 走看看