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

【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 接口与类的异同:

  • 相同:
  1. 可编译成字节码文件。
  2. 不能创建对象
  3. 可以作为医用类型
  4. 具备Object类中所定义的方法
  • 不相同 :
  1. 所有属性都是公开静态常量,隐式使用public static final修饰
  2. 所有方法都是公开抽象方法,隐式使用public abstract修饰
  3. 没有构造方法、动态代码块、静态代码块。

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的接口、内部类、常用类,期望对大家有用

发布了13 篇原创文章 · 获赞 24 · 访问量 2835

猜你喜欢

转载自blog.csdn.net/lxn1214/article/details/104587710