zoukankan      html  css  js  c++  java
  • Javaoop_接口

    在软件中,接口同样是一种规范和标准,它们可以约束类的行为,

    接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合。接口通常以interface来声明。

    一个类通过继承接口的方式,从而来继承接口的抽象方法。如果一个类只由抽象方法和全局常量组成,

    那么这种情况下不会将其定义为一个抽象类。只会定义为一个接口,所以接口严格的来讲属于一个特殊的类,

    而这个类里面只有抽象方法和全局常量,就连构造方法也没有。

    接口示例--

    public interface Eateble {   
    public static final String MSG = "hello";//全局常量
        public abstract void print();//抽象方法
    }

    二、接口的使用

    由于接口里面存在抽象方法,所以接口对象不能直接使用关键字new进行实例化。接口的使用原则如下:  

    1.接口不能被实例化,接口是比抽象类抽象程度更高的类型。

    2.一个接口最好只定义一个方法,防止接口污染

     3.接口不能有构造,抽象类可以有构造

     4.接口是一种数据类型 

    5.接口可以多继承  

    6.接口中所有的字段都必须是公有的静态常量

     7.接口所有方法都是公有的抽象方法

     8.一个类实现某个接口的话,必须重写他的所有的抽象方法。

     9.接口只是为实现它的类定义了规范,保证实现类的方法签名和接口中方法一致

    10接口必须要有子类,但此时一个子类可以使用implements关键字实现多个接口;

    接口和抽象类技术对比

    01.抽象类中可以有普通方法,接口中不能
    02.抽象类可以有构造,接口不能
    03.抽象类中可以有普通字段,而接口中不行
    04.抽象类不能实现多继承,接口可以
    05.符合is a关系的选用抽象类,符合has a关系的选用接口
    06.接口比抽象类抽象程度更高

    ----一个简单的示例

    public abstract class Door {
    
        public abstract void oper();
        
        public abstract void close();
    }
    public interface IDoorbell {
        
        public void Bell();
    }
    public interface ILock {
        
        public void Lock();
    }
    public class FDDoor extends Door implements IDoorbell,ILock{
    
        @Override
        public void oper() {
            System.out.println("打开房门");
        }
    
        @Override
        public void close() {
            System.out.println("关闭房门");        
        }
    
        @Override
        public void Lock() {
            System.out.println("按下房门门铃");                
        }
    
        @Override
        public void Bell() {        
            System.out.println("锁上房屋门锁");        
        }
    
    }

    测试类--

    public class MyMain {
    
        public static void main(String[] args) {
            FDDoor door=new FDDoor();
            door.oper();
            door.Lock();
            door.close();
            door.Bell();
        }
    
    }
  • 相关阅读:
    SVG
    GML、SVG、VML的比较
    用VS.NET中的测试工具测试ASP.NET程序
    Ajax.NET 初步应用
    解决“未能创建 Mutex”的问题(转)
    .net捕获全局异常并且记录日志、多线程方式发送邮件提醒
    DataTable导出到Excel时身份证号信息自动转换为科学计数法的解决方案
    js三级联动地址选择
    .net通过一般处理程序模拟用户控件数据保持、Ispostback 【第二版将html与ashx文件分开】
    .net通过一般处理程序模拟用户控件数据保持、Ispostback
  • 原文地址:https://www.cnblogs.com/matianpeng/p/8505034.html
Copyright © 2011-2022 走看看