abstract、Interface、Object、类之间关系

1. abstract

1.1 是什么

abstract 是修饰符,表示抽象的,用来修饰抽象类和抽象方法

abstract修饰的类是抽象类,并且抽象类不能创建对象,而且抽象类一般主要是用于被继承

子类如果继承了抽象类,那么需要实现所有的抽象方法,否则该子类就需要使用abstract修饰

普通类继承抽象类需要实现所有抽象方法

抽象类继承抽象类,需要实现0~N个抽象方法

abstract修饰的方法是抽象方法,并且该方法没有方法体,就可以看做是没有方法体的成员方法,只定义功能,不定义实现,用于让不同的子类去实现(覆写)抽象方法,必须在抽象类中,而抽象类中可以没有抽象方法

抽象类可以看做特殊的类,类能做的它都能做,只不过,不能创建对象,可以有抽象方法而已

abstract 和 final 不能同时出现

1.2 使用语法

2.Interface

2.1 是什么

Interface : 定义接口的关键字

JDK1.8之前,接口是完全抽象的,只允许出现抽象方法和常量(psf)

1.8开始,可以出现静态方法和默认方法(等同看成成员方法)

接口中,没有变量,只有常量(可以有局部变量),并且psf可以省略,接口中,权限控制默认是公共的

并且抽象方法的abstract 可以省略

接口不能创建对象,没有构造方法,但是能发生多态 父接口 变量 = new 子类();

类和接口之间,不再是继承关系(extends) , 而是 实现关系(implements),并且是多实现,多个用逗号隔开

一个普通类实现接口,需要实现(覆写)所有的抽象方法

一个抽象类实现接口,需要实现0~N个抽象方法

接口和接口之间是继承关系(extends),并且是多继承,多个用逗号隔开

如果接口和抽象类都能实现某个功能的时候,优先使用接口

因为类和接口直接是多实现的关系,如果使用接口这样会保留类继承,扩展性更强

2.2语法

3.Object

3.1. 概述

Object 是java提供的根类(祖宗),所有类都直接或间接继承Object

java.lang.Object; 在java.lang包下 , 这个包 是 核心包,用该包下所有的类,都不需要进行导入

3.2. Equals

equals方法的设计目的 : 比较两个对象是否相等,但是 默认的equals比较的是内存地址

== : 比较基本类型是比较的值的大小, 比如引用类型,比较的是内存地址

如果我们不要比较内存地址,而且比较某些属性值的话,需要我们根据需求进行覆写

String ,已经覆写了equals方法,比较的是值

3.3 Finalize

JVM : 跨平台,多线程,面向对象,自动垃圾回收

面向对象 : 封装,继承,抽象,多态

垃圾 : 没有任何引用指向该对象的时候,则该对象为垃圾数据

就是堆内存有个对象,但是谁也找不到它

垃圾在被回收的时候,会自动调用该对象的finalize方法,是在对象生命周期要结束的时候,被调用的

所以 适合做一些关闭资源等操作

finalize是没有回收功能的,只是要被回收之前,自动被调用而已,我们也可以手动调用finalize方法,但是仅仅是方法调用而已

3.4 toString

toString : 该方法代表了该对象的字符串形式的描述方式

输出一个引用类型的时候,会自动调用该对象的toString方法 , 默认的toString方法是打印内存地址

如果打印不要内存地址,或者需要以特定格式打印输出,则需要我们自己覆写该方法

4 类之间关系

4.1. 继承

继承关系/繁华关系 继承指的是一个类(子类、子接口)继承另外一个类(成为父类、父接口)的功能,并可以增加它自己的新功能的能力,在java中继承关系通过extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用一条带空心三角箭头的实现标志,从子类指向父类,或者从子接口指向父接口

4.2. 实现

实现关系 : 实现指的是一个class类实现Interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在java中此类关系通过关键字implements明确标识,在设计时一般没有争议。在UML类图设计中,实现用一条带空心三角箭头的虚线标识,从类指向实现的接口

4.3 依赖

4.4 关联

4.5 聚合

4.6 组合

5 内部类

5.1 概述

当一个事物的内部还有一个部分需要一个完整的结构进行描述,而这个内 部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使 用内部类

在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者 称为外部类。

Inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完 整的名称。

内部类的名字 : 外部类类名$内部类类名

Class A{

Class B{

}

}

A$B

5.2. 成员内部类

5.3 静态内部类

5.4. 局部内部类

5.5 匿名内部类

6 设计模式

6.1 概述

软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

前人栽树后人乘凉

一般代表了最佳实践

单例模式 : 让某个类只创建一个对象

* 1 构造方法私有化,因为创建对象,使用构造方法,所以我们想要限制对象的创建,就要限制构造方法的使用

* 2 创建一个用于保存对象的静态变量

* 3 对外提供一个用于获取对象的方法(一定是静态方法)

6.2 饿汉模式

6.3. 懒汉模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值