JAVA中的三大特殊类:抽象类,接口类,内部类(JAVA基础)

抽象类

1.抽象类

包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必领定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用

2.抽象方法

使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现

3.五个重要的特点

1.有抽象方法的类只能定义成抽象类

2.抽象类不能实例化,即不能用new来实例化抽象类。

3.抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用

4.抽象类只能用来被继承

5.抽象方法必须被子类实现

接口类

1.定义

1.接口就是规范,定义的是一组规则,可以更加规范对子类的约束

2.接口和实现类不是父子关系,而是实现规则的关系

2.接口的6个要点

1.子类通过implements来实现接口中的规范

2.接口不能创建实例,但是可用于声明引用变量类型

3.一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的

4.接口可以多继承

5.JDK1.8(不含8)之前,接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法

6.JDK1.8(含8)后,接口中包含普通的静态方法、默认方法

3.JDK1.8新特性

1.默认方法:默认方法和抽象方法的区别是抽象方法必须要被实现,默认方法不是。作为替代方式,接口可以提供默认方法的实现,所有这个接口的实现类都会通过继承得到这个方法

2.静态方法:JAVA8以后,我们也可以在接口中直接定义静态方法的实现。这个静态方法直接从属于接口(接口也是类,一种特殊的类),可以通过接口名调用

内部类

1.要点

1.内部类是一类特殊的类,指的是定义在一个类的内部的类

2.内部类可以使用public、default、protected 、private以及static修饰。而外部顶级类(我们以前接触的类)只能使用public和default修饰

3.本质:内部类只是一个编译时概念,一旦我们编译成功,就会成为完全不同的两个类

2.作用

1.内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问

2.内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。但外部类不能访问内部类的内部属性

3.接口只是解决了多重继承的部分问题,而内部类使得多重继承的解决方案变得更加完整

3.分类

1.非静态内部类

1.非静态内部类对象必须寄存在一个外部类对象里。因此,如果有一个非静态内部类对象那么一定存在对应的外部类对象。非静态内部类对象单独属于外部类的某个对象

2.非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员

3.非静态内部类不能有静态方法、静态属性和静态初始化块

4.外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例

2.静态内部类

1.静态内部类看做外部类的一个静态成员

2.当一个静态内部类对象存在,并不一定存在对应的外部类对象。因此静态内部类的实例方法不能直接访问外部类的实例方法

3.匿名内部类

1.适合那种只需要使用一次的类。比如:键盘监听操作等等

2.匿名内部类没有访问修饰符

3.匿名内部类没有构造方法。因为它连名字都没有那又何来构造方法呢

4.局部内部类

1.定义在方法内部的,作用域只限于本方法,称为局部内部类

2.作用域仅限于所在方法。

  • 26
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值