Java的接口、内部类、常用类

Connie ·
更新时间:2024-11-10
· 869 次阅读

【Java总结】-【入门篇(第四周)】 后续每周总结一次

JAVA接口、内部类、常用类 一、JAVA接口 1.1 什么是接口?:

接口相当于特殊的抽象类,定义方式、组成部分于抽象类类似。

微观概念:接口是一种能力和约定

接口的定义:代表了某种能力 方法的定义:能力的具体要求

经验:Java为单继承,当父类方法种类无法满足子类需求时,可实现接口扩充子类能力

接口支持多实现,可为类扩充多种接口

接口的格式

interface 接口名{ 静态常量 抽象方法 }

举个栗子:

interface TestInterface{ public final static int NUASA = 10; public static int NUASB = 20; public abstract void abstractMethods(); } 1.2 接口与类的异同: 相同: 可编译成字节码文件。 不能创建对象 可以作为医用类型 具备Object类中所定义的方法 不相同 : 所有属性都是公开静态常量,隐式使用public static final修饰 所有方法都是公开抽象方法,隐式使用public abstract修饰 没有构造方法、动态代码块、静态代码块。 1.3 接口的规范:

任何类在实现接口时,必须实现接口中所有抽象方法,否则此类为抽象类
实现接口中抽象方法时,访问修饰符必须是Public

接口的引用
同父类一样,接口也可声明为引用,并指向实现类对象。

注意:
仅可调用接口中所声明的方法,不可调用实现类中独有的方法
可强转回实现类本身类型,进行都有方法调用。

接口的多态:
多种不同类型的引用指向同一个对象时,表示看待对象视角的不同
不同引用所能看到的对象范围不同,只能调用自身类型中所声明的部分

不同类型的引用只能调用自身类型中声明的方法

1.4 接口回调 先有接口使用者,后又接口的实现者。 接口定义 public interface EatNoodles{ public void eat(String foods); } 接口的使用 public class YanYan{ public void getUp(String goods, EatNoodles en){ System.out.println("岩岩起床洗漱"); // 岩岩调用了敢敢的方法 en.eat(goods); } } 接口的实现 public class GanGan implments EatNoodles{ @Override public void eat(String foods){ System.out.print("敢敢和岩岩一起吃:" + foods); } public void eatFood(){ YanYan yy = new YanYan(); yy.getUp("大米饭",yy); } } 1.5 接口的好处 程序耦合度降低 更自然地使用多态 设计与实现完全分离 更容易搭建程序框架 更容易更换具体实现 二、JAVA内部类

内部类具体学习请点击这里

2.1 内部类的介绍

在一个类内部在定义一个完整的类

特点:
编译之后可生成独立的字节码文件
内部类可直接访问外部类的私有成员,而不破坏封装。
可为外部类提供必要的内部功能组件

分类:

成员内部类 静态内部类 局部内部类 匿名内部类 2.2 成员内部类 在类内部定义,与实例变量、方法实例方法同级
外部类的一个实力部分,创建内部类对象时,必须依赖外部类对象
当外部类、内部类存在重名属性时,会优先调用内部类属性
成员内部类不能定义静态成员 2.2 静态内部类 不依赖外部类对象,可直接创建或通过类名访问,可声明静态成员。
只能直接访问外部类的静态成员 2.3 局部内部类 定义在外部类方法中,作用范围和创建对象范围仅限于当前方法
局部内部类访问外部类当前方法中的局部变量时,因无法保障变量的生命周期与自身相同,变量必须修饰为final. 2.4 匿名内部类

没有类名的局部内部类
必须继承一个父类或者实现一个接口
定义类、实现类、创建对象的语法合并,只能创建一个该类的对象。

优点:减少代码量。

缺点: 可读性较差

三、Object类及其常用方法

Object具体学习请点击这里

超类、基类,所有类直接或间接父类,位于继承树最顶端 任何类,如果没有书写extends显示继承某个类,都默认直接继承Object类,否自都是间接继承 Object类中所定义的方法,是所有对象都具备的方法。 Object类型可以存储任何对象。 作为参数,可接受任何对象 作为返回值,可返回任何对象。

主要介绍以下5个方法:

getClass()方法 hashCode()方法 toString()方法 equals()方法 finalize()方法 3.1 getClass()方法 返回应用存储的时机对象类型 应用:通常用于判断两个引用中实际存储对象类型是否一致 3.2 hashCode()方法 返回该对象的十六进制的哈希码值 哈希算法根据对象的地址或字符串或数字计算出来的int类型的数值 哈希码并不唯一,可保证相同对象返回相同哈希码,尽量保证不同对象返回不同哈希码。 3.3 toString()方法 返回对象字符串表示 可以根据程序需求覆盖该方法 3.4 equals()方法 比较两个对象地址是否相同 可进行覆盖,比较两个对象内容是否相同 覆盖步骤:
1.判断两个引用是否指向同一个对象
2.判断obj是否为null
3.判断两个引用指向的实际对象类型是否一致
4.强制类型转换
5.一次比较各个属性值是否相同 3.5 finalize()方法 当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列 垃圾对象:没有有效引用指向此对象时 垃圾回收:由GC销毁垃圾对象,释放数据存储空间 自动回收机制:JVM的内存耗尽,一次性回收所有垃圾 手动回收机制:使用System.gc():通知JVM执行

本周回忆整理了 Java的接口、内部类、常用类,期望对大家有用


作者:敢敢-李



JAVA java的 内部类 接口

需要 登录 后方可回复, 如果你还没有账号请 注册新账号