zoukankan      html  css  js  c++  java
  • 面向对象——接口

    package com_package1;
    
    public abstract class Interface {
        abstract void show();
        abstract void method();
    
    }

    当一个抽象类中全都是抽象方法的时候,这时,可以将这个抽象类定义成接口。

    接口是一个特殊的抽象类,初期的一种简单理解,以为着接口中的方法都是抽象方法

    接口定义的格式: interface 接口名(接口内容)

    interface Inter

    {

    //接口成员,都有固定的修饰符

    //常见:1、常量,全局常量,有固定的修饰符public static final

    //           2、抽象方法 ,有固定的修饰符 public abstract 

    }

    package com_package1;
    
    public interface Inter {
        
        public static final int NUM = 3;
        public abstract void show();
    
    }

    接口的特点:

    1、接口用interface来定义

    2、接口中的的成员都有固定的修饰符

    3、接口不能被实例化

    4、接口必须由其子类覆盖了所有的抽象方法后,该子类才可以实例化,否则,该子类还是一个抽象类。

    5、接口中的成员都是public权限

    定义一个接口的子类去对该类接口中的方法进行覆盖

    package com_package1;
    
    public   class InterImpl implements Inter {
    
        @Override
        public void show() {
            // TODO Auto-generated method stub
            
        }
    
    }

    类与类之间是继承关系,类与接口之间是实现关系

    接口的好处:接口可以被多实现,这就是多继承机智哎java语言被改良后的结果,一个类只能继承一个父类但是一个类可以实现多个接口

    package com_package1;
    
    public interface A {
        public abstract void show1();
        
    
    }
    package com_package1;
    
    public interface B {
        public abstract void show2();
    
    }
    package com_package1;
    
    public class C implements A,B{
    
        @Override
        public void show2() {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void show1() {
            // TODO Auto-generated method stub
            
        }
    
    }

    误区:记住:抽象函数,也要遵从函数的基本定义格式,要明确结果,要明确未知内容,只不过函数体由子类完成

    package com_package1;
    
    public interface Inter {
        
        //public static final int NUM = 3;
        public abstract void show();
        public abstract int add(int x,int y);
    
    }
    package com_package1;
    
    public   class InterImpl implements Inter {
    
        @Override
        public void show() {
            System.out.println("show run");
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public int add(int x, int y) {
            // TODO Auto-generated method stub
            return x+y;
            //return 0;
        }
    
    }

    接口避免了单继承的局限性

    特别的:

    package com_package1;
    
    public class A {
        public void show() {
            
            System.out.println("aaaaaaaaaaaa");
        }
        
    
    }
    package com_package1;
    
    public interface B {
        public abstract void show();
    
    }
    package com_package1;
    
    public class C extends A implements B{
    //西安阿紫不用在这里面对接口中的抽象类进行实例化了,因为他已经继承了A中的show(),就已经实例化了。
    
    }

    类与类之间是继承关系,接口与接口之间是继承关系,接口与类之间是实现关系。

    package com_package1;
    
    public interface  A {
        public abstract void showA();
            
    //    
    
    }
    package com_package1;
    
    public interface B  extends A{
        public abstract void showB();
    
    }
    package com_package1;
    
    public interface C extends  B{
      public abstract void showC();
    
    }
    package com_package1;
    
    public class Demo  implements C {
    
        @Override
        public void showB() {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void showA() {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void showC() {
            // TODO Auto-generated method stub
            
        }
        
    
    }

     接口的特点

    接口是对外暴漏的规则

    接口是程序的功能扩展

    接口的出现降低耦合性

    接口可以用来多实现

    类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口

    接口与接口之间可以有继承关系

    接口和抽象类的区别:

    1、类是用来继承的,只能单继承,接口是用来实现的,可以多实现

    2、类中可以定义非抽象内容,直接提供给子类使用。接口中只能定义抽象犯法,需要子类全部实现

    3、类存在着继承关系,接口中是实现的关系

    共同点:他们都是不断抽取而来的

    当一个抽象类中全部都是抽象方法的时候,这是,可以将这个抽象类定义成接口,接口是一个特殊的抽象类,这可以是初期的一种简单的理解,意味着接口中的方法都是抽象方法

  • 相关阅读:
    python命令行传参详解,optparse模块OptionParse类的学习
    设计模式之共享模式
    用flask搭建一个测试数据生成器(v1.1)
    用flask搭建一个测试数据生成器(v1.0)
    jmeter中使用beanshell断言
    jmeter中beanshell脚本的使用
    从上帝视角看OS进程调度
    Linux网络内部原理系列
    从文件read/write一个字节的过程和所发生的磁盘IO
    深入理解系统中断(INTERUPT)
  • 原文地址:https://www.cnblogs.com/mmlovejj/p/4486391.html
Copyright © 2011-2022 走看看