zoukankan      html  css  js  c++  java
  • Java SE 第二十二讲----接口interface

    1.接口:interface:接口的地位等同于class,接口中的所有方法都是抽象方法。在声明接口中的方法的时候,可以使用abstract关键字也可以不使用。通常情况下,都会省略掉abstract关键字。

    2.可以将接口看作是特殊的抽象类(抽象类中可以有具体方法,也可以有抽象方法,而接口中只能有抽象方法,不能有具体方法)

     

    package com.cl.abstracttest;
    
    public interface InterfaceTest {
    
        public abstract void output();//可以省略掉abstract关键字
        
    }

    3.类跟继承的关系

    类可以实现接口。实现使用关键字implements表示。代表某个类实现了某个接口。

    4.一个类实现了某个接口,那个该类必须要实现接口中声明的所有方法。如果该类是个抽象类,那么就无需实现接口中的方法了。

    报错:The type MyClass must implement the inherited abstract method MyInterface.output()

    解决办法:

    package com.cl.abstracttest;
    
    public class Test3 {
    
        public static void main(String[] args) {
            MyClass myClass = new MyClass();
            myClass.output();
        }
    }
    
    interface MyInterface{
        
        public void output();
    }
    class MyClass implements MyInterface
    {
    
        @Override
        public void output() {
          System.out.println("test");
            
        }
        
    }

    5.java是单继承的,也就是说某个类只能有唯一一个父类,一个类可以实现多个接口,多个接口之间使用逗号分隔。

    package com.cl.abstracttest;
    
    public class Test3 {
    
        public static void main(String[] args) {
            MyClass myClass = new MyClass();
            myClass.output();
            myClass.output2();
        }
    }
    
    interface MyInterface{
        
        public void output();
    }
    
    interface MyInterface2{
        public void output2();
    }
    class MyClass implements MyInterface,MyInterface2
    {
    
        @Override
        public void output() {
          System.out.println("test");
            
        }
    
        @Override
        public void output2() {
            System.out.println("test2");
            
        }
        
    }


     

    6.

    package com.cl.abstracttest;
    
    public class Test3 {
    
        public static void main(String[] args) {
            MyClass myClass = new MyClass();
            myClass.output();
            myClass.output2();
            myClass.output3();//从父类继承过来的
        }
    }
    
    interface MyInterface{
        
        public void output();
    }
    
    interface MyInterface2{
        public void output2();
    }
    
    class MyParent{
        public void output3(){
            System.out.println("output3");
        }
    }
    
    class MyClass extends MyParent implements MyInterface,MyInterface2//继承了父类,还继承了两个接口
    {
    
        @Override
        public void output() {
          System.out.println("test");
            
        }
    
        @Override
        public void output2() {
            System.out.println("test2");
            
        }
        
    }
    输出结果如下:
    
    

    test
    test2
    output3

     

    多态:所谓的多态是指父类型的引用可以指向子类型的对象,或者接口类型的引用可以指向实现该接口的类的实例。关于接口与实现接口的类之间的强制类型转换方式与父类与子类之间的强制类型转换方式完全一样。

    package com.cl.abstracttest;
    
    public class Test4 {
        public static void main(String[] args) {
            AA bb = new BB();//接口类型的引用可以指向实现该接口的类的实例
            bb.output();        
        }
    }
    
    interface AA{
        public void output();
    }
    class BB implements AA{
    
        @Override
        public void output() {
            System.out.println("BB");
            
        }
        
    }

    关于接口与实现接口的类之间的强制类型转换方式与父类与子类之间的强制类型转换方式完全一样。这句话理解有如下代码

    package com.cl.abstracttest;
    
    public class Test4 {
        public static void main(String[] args) {
            /*向上类型转换
            BB bb = new BB();
            AA aa = bb;
            bb.output(); */
            
            //向下类型转换
            AA aa = new BB();
            BB bb = (BB)aa;
            bb.output();        
            
        }
    }
    
    interface AA{
        public void output();
    }
    class BB implements AA{
    
        @Override
        public void output() {
            System.out.println("BB");
            
        }
        
    }
  • 相关阅读:
    【入门】WebRTC知识点概览 | 内有技术干货免费下载
    mysql数据库运维方案
    前端报504错误如何定位
    Python数据分析之双色球高频数据统计
    利用Dapper ORM搭建三层架构
    ASP.NET和IIS工作原理
    C#中的new修饰符
    .NET 三层架构的简单规划
    Docker Hub中拉取镜像时出现超时问题该如何做?
    项目组件:分页(pagination)
  • 原文地址:https://www.cnblogs.com/dieyaxianju/p/5138646.html
Copyright © 2011-2022 走看看