• 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

    希望能够帮到大家

    以上

  • 相关阅读:
    Js~数组的操作push,pop,shift,unshift
    SqlServer 字段类型详解
    数据库设计三大范式
    HTML 解析类库HtmlAgilityPack
    设计模式六大原则
    表达式目录树
    在Web.config或App.config中的添加自定义配置
    史上最全 ——LINQ to SQL语句
    C# 加密解密类
    WebService登陆验证四种方式
  • 原文地址:https://www.cnblogs.com/lavender-pansy/p/10776538.html
Copyright © 2020-2023  润新知