zoukankan      html  css  js  c++  java
  • java_基础_接口和抽象类

    1.接口

    java中接口的存在意义是:让多个继承该接口的类实现多态,让多个类有相同的特征

    示例代码:

    interface MyInterface{
        void myMethod();
    }
    
    class Test1 implements MyInterface{
    
        @Override
        public void myMethod() {
            // TODO 自动生成的方法存根
            System.out.println("test1");
        }
        
    }
    
    class Test implements MyInterface{
    
        @Override
        public void myMethod() {
            // TODO 自动生成的方法存根
            System.out.println("test");
        }
        
        public void test2(MyInterface me) {
            me.myMethod();
        }
        
        public static void main(String[] args) {
            Test test = new Test();
            test.myMethod();
            Test1 test1= new Test1();
            test1.myMethod();
            test.test2(new MyInterface() {
                @Override
                public void myMethod() {
                    // TODO 自动生成的方法存根
                    System.out.println("test2");
                }
            });
            
        }
    }

    基本用法就如上,被红色标注的是接口的匿名内部实现方法,也算是一种写法了

    输出如下:

    test
    test1
    test2

    2.抽象类

    抽象类内部可以有完善的方法,但是不可以被实例化,只能够被间接的调用内部方法以及参数,比如在当做参数传递的时候,以及在非静态方法中使用super调用

    示例代码:

    abstract class MyAbstractClass{
        abstract void myMethod();
        
        void myAbstractClass() {
            System.out.println("hello myAbstract");
        }
    }
    
    class Test1 extends MyAbstractClass{
    
        @Override
        public void myMethod() {
            // TODO 自动生成的方法存根
            System.out.println("test1");
        }
        
    }
    
    class Test extends MyAbstractClass{
        
        @Override
        public void myMethod() {
            // TODO 自动生成的方法存根
            System.out.println("test");
        }
        
        public void test2(MyAbstractClass me) {
            me.myMethod();
            me.myAbstractClass();
    super.myAbstractClass(); }
    public static void main(String[] args) { Test test = new Test(); test.myMethod(); Test1 test1= new Test1(); test1.myMethod(); test.test2(new MyAbstractClass() { @Override public void myMethod() { // TODO 自动生成的方法存根 System.out.println("test2"); } }); } }

    基本用法和接口是一样的,只不过接口中不能有完善的方法,而且不用abstract关键字,抽象类中抽象方法一定要用abstract关键字

    输出如下:

    test
    test1
    test2
    hello myAbstract
    hello myAbstract

    希望能够帮到大家

    以上

  • 相关阅读:
    shader之渐变长方体实现(threejs)
    shader之threejs应用
    shader之cesium应用
    pip install -- Failed building wheel for XXX
    pycharm -- 界面乱码
    Android Studio -- 优化速度
    django -- ImageField 上传图片修改头像
    AI -- 回溯法解决四皇后问题
    Android Studio -- 真机测试
    傻瓜函数式编程
  • 原文地址:https://www.cnblogs.com/lavender-pansy/p/10776538.html
Copyright © 2011-2022 走看看