zoukankan      html  css  js  c++  java
  • 接口和内部类的定义

    接口_内部类

    接口是一种引用数据类型,用interface声明接口;

    public interface 接口名称{

    }

    接口的特性

    1. 接口里定义的变量都是静态常量,用final stactic修饰;

    2.所有方法都是抽象方法;;

    3.接口不能new(创建)对象;(因为接口没有构造方法);

    4.接口可以多继承,一个接口可以继承多个接口;(类属于单继承,具有传递性,但多继承接口,继承在前,实现再后)

    public interface CInterface extends AInterface, BInterface {

     //多个接口间用逗号隔开

    }

    5.一个类可以实现一个或者多个接口,成为接口的实现类,实现类必须实现接口的所有抽象方法。

    如果一个抽象父类定义了和接口的抽象方法,实现类实现的是抽象父类的抽象方法。

    总结:

    实现类实现接口,必须实现接口中定义的抽象方法。

     方法即行为,表示一种功能

     接口定义了一套功能,实现类必须实现这些功能 –> 实现类的能力得到拓展。

     接口的应用

     [1]接口表示一种能力

    接口中定义的一些系列方法表示的是一种种的能力。接口让实现类实现这些能力,实现类的能力得到拓展和升级。

    实现类根据自身特性实现接口中定义的方法。

    【2】接口实现多态

    package cn.sxt.interface4;

    public class Test01 {

    public static void main(String[] args) {

    // 同一引用类型

    USBInterface usbInterface = null;

    // 实例不同

    usbInterface = new USBFan();

    // 对同一方法的执行结果不同

    usbInterface.connect();

    usbInterface = new USBMouse();

    usbInterface.connect();

    usbInterface = new USBDisk();

    usbInterface.connect();

    }

    }

    总结:继承实现多态 父类类型 引用 子类对象;而接口实现多态则是 接口类型 引用实现类对象。 

    [3] 面向接口编程

    接口表示一约定(协议),约定(规范)实现类应该具备(has a)的能力。

    面向接口编程

    所谓面向接口编程,程序设计时,只关心实现类具备什么能力,而不关心实现类如何实现这个能力。面向接口编程时,面向接口的约定而不考虑接口的具体实现。

    也就是说,面向接口编程时,接口的定义方只关系实现类是否具备接口所定义的能力,而实现类如何被的该能力接口定义方一点都不关心

    package cn.sxt.interface06;

    public class Writer {

    // 预留墨盒接口

    private InkBoxInterface inkBoxInterface;

    // 预留纸张接口

    private PaperInterface paperInterface;

    public InkBoxInterface getInkBoxInterface() {

    return inkBoxInterface;

    }

    public void setInkBoxInterface(InkBoxInterface inkBoxInterface) {

    this.inkBoxInterface = inkBoxInterface;

    }

    public PaperInterface getPaperInterface() {

    return paperInterface;

    }

    public void setPaperInterface(PaperInterface paperInterface) {

    this.paperInterface = paperInterface;

    }

    public Writer(InkBoxInterface inkBoxInterface, PaperInterface paperInterface) {

    super();

    this.inkBoxInterface = inkBoxInterface;

    this.paperInterface = paperInterface;

    }

    public Writer() {

    super();

    }

    public void print(String content) {

    System.out.println("打印机正在使用"+this.inkBoxInterface.getColor()+"颜色打印"+this.paperInterface.getSize()+"打印"+content);

    }

    }

    总结:::抽象类和接口的异同比较

    • 抽象类和接口都是引用数据类型,他们都不能创建对象。
    • 他们都可以定义抽象方法,都可以实现多态。但是抽象类可以定义非抽象方法,而接口中定义的都是抽象方法。
    • 抽象类和接口都具有传递性。抽象类是单根性(单继承),而接口是多继承。
    • 在概念上,都可以重写抽象方法。子类重写抽象类,实现类实现接口
    • 抽象类和子类解决的是模块内的问题(代码重用,重写,多态)而接口解决的是模块间的问题 => 高内聚,低耦合。接口可以用解耦模块。

     

    Object

    object 是所有类的根类;

    所有没有写EXTEND的类都是继承于object’类。

    toString() 返回对象的字符串表示形式

    equals(Object obj) 用于判断两个对象是否相

    == 比较两个对象的内存地址或基本数据类型的比较,object默认equals实现比较内存地址。

    equals:用于比较两个对象的内容(属性)是否相等

    自定义对象时,要比较自定义对象是否相等,就必须通过equals方法比较两个对象属性值是否相等,那就必须重写Objectequals方法

     内部类

    java中,一个文件可以定义多个类,文件名必须和public 类型的类的类名保持一致。两个类是平行关系。

    在java中,一个类可以定义在一个类的内部定义在内部的类称为内部类(inner class),定义在外部的类称为外部类(out class).

    public class Outer {

    [修饰符] class Inner{

    }

    }

    内部类根据具体的修饰符和具体位置为很多情况。

     成员内部类

    一个内部类作为一个外部类的成员而存在,此时该内部类称为外部类的成员内部类

    public class Test01 {

    public static void main(String[] args) {

    // 1】创建外部类对象

    Outer outer = new Outer();

    // 2】创建内部类对象

    Inner inner = outer.new Inner();

    inner.showInfo();

    }

    }

    特殊情况:部类和内部类的变量同名

    public class Outer {

    private String name = "Outer";

    class Inner{

    private String name = "Inner";

    public void showInfo() {

    // String name = "show info";

    // 访问外部类的私有成员

    System.out.println(this.name);

    // 访问外部类的私有成员

    System.out.println(Outer.this.name);

    }

    }

    }


  • 相关阅读:
    Python学习笔记Day08
    Python学习笔记Day06~07
    Python学习笔记Day05
    linux文件属性之用户和组基础知识
    linux文件属性之linux文件删除原理
    linux文件属性软硬链接知识
    linux文件属性文文件类型知识
    linux文件属性描述(inode,block)
    xargs命令
    find命令
  • 原文地址:https://www.cnblogs.com/gflb/p/10770520.html
Copyright © 2011-2022 走看看