Java接口与内部类知识点概括

接口概述

         接口就是一种公共的规范标准,只要复合规范标准,大家都可以通用

         Java中的接口更多的体现在对行为的抽象

接口用关键字interface修饰

         Public interface 接口名{}

类实现接口用implements表示

         Public class 类名 implements接口名{}

接口不能实例化

         接口如何实例化呢?参照多态的方式,通过实现类对象实例化,这叫接口多态

         多态的形式:具体类多态、抽象类多态接口多态

         多态的前提:有继承或者实现关系;有方法重写;有父(类/接口)引用指向(子/实现)类对象

接口的实现类

         要么重写接口中的所有抽象方法

         要么是抽象类

 

成员变量

         只能是常量

         默认修饰符:public static final

构造方法

         接口没有构造方法,因为接口主要是对行为进行的抽象,是没有具体存在一个类如果没有父类,默认继承Object类

成员方法

         只能是抽象方法

         默认修饰符:public abstract

         关于接口中的方法,Jdk8和Jdk9中有一些新特性

 

类和类的关系

         继承关系,只能单继承,但是可以多层继承

类和接口的关系

         实现关系,可以单实现,也可以多实现,还可以再继承一个类的同时实现多个接口

接口和接口的关系

         继承关系,可以单继承,也可以多继承

Java接口与内部类知识点概括

继承一个类还可以实现多个接口

Java接口与内部类知识点概括

接口和接口时继承关系是可以多继承的

 

接口叫做最彻底的抽象类

接口不是类,但具有类的某些特征,

接口也是引用数据类型

因为在接口中jdk1.8之前是几乎没有带方法体的方法

接口如同抽象类,当中的抽象方法,abstract可以省略。

这些方法必须要被其实现类实现

当某一个类实现某个接头,一定要重写夹头中的抽象方法

否则该类需要改写为抽象类

 

 

实现某一个接口的类叫做实现类  必须要重写接口中的方法

 

继承一个类的同时也可以去实现一个接口

接口没有构造器  所有接口没有办法实例化对象

但是可以利用接口的实现类来实例化

Java接口与内部类知识点概括

接口时给没有关系的类指定的方法

 

接口中方法如果没有访问修饰符,默认为public

接口中只能够使用public修饰

 

接口中可以存放常量

接口中的常量在定义的同时就当场赋值

Java接口与内部类知识点概括

 

对于接口中定义的属性一定得是常量,即在定义常量的时候public static final可以省略不写

Java接口与内部类知识点概括

 

 

接口中除了有抽象方法和常量在jdk1.8义后新增了两个特殊的方法(默认方法和静态方法)

默认方法还好  静态方法有一定的误导性

 

默认方法使用default修饰

默认方法可以被重写也可以不被重写

 

静态方法也是可以携带方法体的

静态方法不能够被重写,只能够通过接口进行调用

 

即使实现类没有重写,但是默认方法也是可以进行调用的

 

重写默认方法必须要用public来修饰

 

在多个接口中需要注意 如果默认方法重名,最好返回值相同,否则一起使用时会导致实现类报错,并难以解决

 

如果不是默认方法

 

在多个接口中最好不要定义同名的抽象方法

 

当要实现的接口和继承的类中存在同名的常量时,java虚拟机无法辨认该常量来源于谁,于是该类存在此常量,但是默认不会给该类的常量进行赋值。如果想要使用该常量,则需要对此常量进行赋值

 

抽象类和接口的区别

成员区别:

         抽象类             变量:常量:有构造放啊;有抽象放啊,也有非抽象方法

         接口                 变量:抽象方法

关系区别:

         类与类             继承,单继承

         类与接口        实现,可以单实现,也可以多实现

         接口与接口    继承,单继承,多继承

设计理念区别:

         抽象类             对类抽象,包括属性,行为

         接口                 对行为抽象,主要是行为

 

抽象类名作为形参和返回值

         方法的形参是抽象类名,其实需要的是该抽象类的子类对象

         方法的返回值是抽象类名,其实返回的是该抽象类的子对象

 

内部类概述

内部类:

就是再一个类中定义一个类。

举例:

         再一个类A的内部定义一个类B,类B就被成为内部类

内部类的定义格式如下:

Java接口与内部类知识点概括

内部类的访问特点

         内部类可以直接访问外部类的成员,包括私有

         内部类要访问内部类的成员,必须创建对象

成员内部类

按照内部类再类中定义的位置不停,可以分为如下两种形式

         再类的成员位置:成员内部类

         再类的局部位置:局部内部类

成员内部类,外界如何创建对象使用呢?

         格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;

         范例:Outer.linner oi = new Outer().new lnnwe();

         这种格式并不针对私有属性

Java接口与内部类知识点概括

Main方法

Outer outer = new Outer();

outer.method();

测试类中的简化写法

Java接口与内部类知识点概括

简化写法Inner inner可以看作是类中的 public void method(){}

Outer.new Inner();

 

 

 

Java接口与内部类知识点概括

 

 

Java接口与内部类知识点概括