类与接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类与接口相关的知识,希望对你有一定的参考价值。

类与接口的关系: 实现关系 接口在类中允许多实现;多个接口之间用逗号个开

   接口是一个特殊类

一个非抽象类是实现了的接口:必须实现接口中的所有方法

一个抽象类实现接口:可以不实现接口中的方法,但是竭诚与它的类就必须实现接口中的方法。

  一个接口可以继承多个接口

 

接口与接口的关系:

   接口与接口存在继承关系,一个接口存在多个继承

 

 

多态: 一个类对象具有多种表现形态(父类的引用类型变量指向子类的对象)

 多态条件:

         1.必须存在继承

         2.必须要有方法的重写

 

  注意: 子父类存在同名的成员变量 ,默认访问父类中的成员

     1. 多态情况下子父类存在同名的非静态方法,访问的是子类的非静态方法

     2.多态情况下子父类存在同名的静态方法,访问的是父类的静态方法

     3.多态情况下:不能访问子类特有的成员变量

 

总结: 多态情况下子父类如果存在同一个成员,访问的都是父类,除了同名的非静态方法访问子类(Java编译器的编译原理所致。)

编译看左边,运行不一定看右边

  编译看左边:java编译器在编译的时候会检测引用类型中是否含有指定成员,如果没有就会报错。

 

多态的使用场景:

     1.多态可以做形式参数,可以让方法接收更多的返回类型。

      2.多态用于返回值类型,可以返回多种数据类型。

 

注意:

     不能用子类去接收返回值(父类),若要用子类接收返回值则要强制转换。

多态的另一种表现形式:

     接口的引用类型指向实现类。(多态的另一种表现形式)

实现关系下的多态:

   接口(接口不能够创建对象 变量 =  new  接口实现对象

内部类: 一个类中可以定义另外一个类。

 

内部类的文件名: 外部类名$符号链接内部类名。

内部类分两种:

    1.成员内部类:

       如何访问成员内部类:

           1.在外部类中定义一个方法,然后通过内部类对象,再通过对象进行访问。

           2.直接在其他类中直接创建内部对象然后通过对象访问

      格式:  外部类.内部类 变量名 = new 外部类().new 内部类();

      内部类使用的注意点:

         1.如果外部类和内部类存在同名的成员变量,在内部类中java虚拟机默认访问内部类中的成员变量,若要访问外部类就必须用 外部类.this

         2.如果内部类中的成员变量被private修饰了,这个时候就只能方式一来修饰

         3.如果内部类中有静态便量static修饰那么这个类也必须是静态的。

   好处:

        内部类可以直接外部类的所有成员。

一般什么时候使用内部类:

     我们在描述一个A对象,发现A对象中有需要有一个对象B很复杂,B对象又要访问A中的数据,这时用内部类来描述B对象就很方便。

       

2.局部内部类:

    在类的方法中定义的类,这样的一个类叫局部内部类。

    局部内部类只能通过第一种方式来访问。

注意:

  1.局部内部类访问了方法中的局部变量,方法中的局部变量用final来修饰。

 

匿名内部类:

   没有类的类就叫匿名内部类。

好处:  简化书写

匿名内部类只是没有名字,其他的和普通类没有区别。

使用前提:

        1.外部类必须有继承或实现关系。

           

以上是关于类与接口的主要内容,如果未能解决你的问题,请参考以下文章

类与接口

类与接口的关系

抽象类与接口

抽象类与接口的区别

类与接口java中的接口与嵌套接口

TypeScript 类与同名接口之间的关系