zoukankan      html  css  js  c++  java
  • 《Java编程思想》笔记 第九章 接口

    1.抽象类和抽象方法

    1. 抽象方法,仅有方法声明没有方法体
      abstract class AbstractClass{
          abstract void f(); //没有 {}
          
      }
    2. 只要有一个或者多个抽象方法,则必是抽象类,抽象类可以没有抽象方法。
    3. 抽象类内可以没有抽象方法,也可以只有实现的方法。
      abstract class AbstractClass{
          
          void g(){
              System.out.println("hello");
          }
      }
    4. 抽象类可以有自己各种权限的字段和方法,但抽象方法一定是public或者protected的,因为抽象类的抽象方法生来就是要被继承重写的。
    5. 继承抽象类,要覆写抽象类内的所有抽象方法,提供方法体,如果不提供方法体那么这个子类也是抽象类,前面要将加关键字
    6. 抽象类可以有静态代码块和非静态代码块。

    2.接口

    1. 接口内没有任何具体实现,没有一个方法体。
      public
      interface Runnable {
      
          public abstract void run();
      }
    2.  接口中的方法默认public权限
    3.  接口中可以有成员变量,但被隐性设定为 static 和  final
    4. 接口中不能有代码块和静态代码块
    5. 接口权限和类一样也有public,但必须在同名文件中

    3.协变类型:

    •  子类中被覆写的方法返回类型可以是父类方法返回值的子类型
    class A {
    
    }
    
    class B extends A {
    
    }
    
    abstract class AbstractClass {
    
        abstract A g();
    
    }
    
    class C extends AbstractClass {
        //返回值类型是A类型
        // A g(){   
        // return null;
        // }
        //g() 返回值类型是A类型的子类型B也可以覆写
        B g() { 
            
            return null;
    
        }
    }

    4.多重继承

    4.1 接口 extends 接口 , 接口,接口,. . .

    4.2 类 extends 接口,接口,接口, . . .

    4.3 类 extends 类   implements 接口,接口,接口, . . .

    4.4 类 implements  接口,接口,接口, . . .

    • 实现多个接口,这些接口中应该避免有相同的方法名

    5.嵌套接口

    •  接口可以嵌套在类中或者其他接口中

    5.1 把嵌套的接口/类在A类外部看作A类的数据成员,在A类内部就看做正常的接口/类

    5.2 类中嵌套的类或者接口权限可以是private

    5.3 由于接口中的方法默认public,所以在接口中的接口不能被声明为private

    5.4 嵌套中的 private接口 作用就是 让这个private接口中的方法无返回类型,不能向上转型

    class A {
        public class Ain{
            
             
            }
        //内部的类权限可以设定为private
        private class Ain2{  
            
            }
        public interface Aface{
            
        }
        private interface Aface2{
            void f(); //必须返回空值
        }
        
    }

    6.接口和抽象类和适配器模式

    • 一个类直接实现接口就要实现接口中的所有方法,但有时并不想实现所有方法就可以使用适配器模式。
    • 使用抽象类可以分离【接口实现】 和 接口, 接口实现可以有选择的实现接口中的部分方法,这就是适配器模式
    • 适配器设计模式

    7.接口和抽象类区别

    1. 语法区别如上
    2. 设计区别:抽象类是对一种事物的抽象,即对类抽象,而接口是对行为动作的抽象
    3. 这篇博客写的非常详细推荐
  • 相关阅读:
    java获得文件的最后修改时间
    【Tomcat】解决Tomcat catalina.out 不断成长导致档案过大的问题
    mysql报错Packet for query is too large (12238 > 1024). You can change this value
    【Tomcat】linux下实时查看tomcat运行日志
    linux下面MySQL变量修改及生效
    【Vim命令大全】史上最全的Vim命令
    (总结)Linux的chattr与lsattr命令详解
    MySql将查询结果插入到另外一张表
    dos中定义变量与获取常见的引用变量以及四则运算、备份文件(set用法)
    批处理BAT替换与截取字符串的用法t1=%a:~3%是什么意思
  • 原文地址:https://www.cnblogs.com/mibloom/p/9040385.html
Copyright © 2011-2022 走看看