面向对象

1. abstract

1.1. 是什么

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

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

抽象类有构造方法

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

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

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

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

抽象方法,必须在抽象类中,而且抽象类中可以没有抽象方法

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

abstract 和 final 不能同时出现

1.2. 使用语法

2. Interface

2.1. 是什么

Interface : 定义接口的关键字

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

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

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

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

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

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

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

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

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

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

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

2.1.1. 使用方法

3. Object

3.1. 概述

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

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

3.2. Equals

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

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

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

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

当需要比较两个对象是否相等的时候用equals方法

3.3. Finalize

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

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

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

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

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

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

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

3.4. toString

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

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

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

默认打印的内存地址

当输出一个对象的时候,想要他输出什么就覆写toString(打印对象想输出什么就写什么)

4. 类之间关系

4.1. 继承

类和类之间是单继承

接口和接口之间是多继承,多个用逗号隔开

4.2. 实现

类和接口之间是多实现,多个用逗号隔开

4.3. 依赖

就是一个类的局部变量是另一个类的对象的引用

4.4. 关联

就是一个类成员变量或者静态变量是另外一个类的引用 或者类对象的引用

4.5. 聚合

整体和局部都有独立的生命周期

4.6. 组合

部分和整体不可分离

5. 内部类

5.1. 概述

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

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

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

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

Class A{

Class B{

}

}

A$B

5.2. 成员内部类

成员内部类等同于成员变量,没有static修饰

可以访问外部类中的私有化属性

成员内部类中不能有静态

成员内部类中可以直接访问外部类中的数据

5.3. 静态内部类

静态内部类中不能直接访问外部类的成员属性,需要创建对象

内部类中静态方法不可以访问外部类中的成员变量

成员方法可以访问外部类中的静态变量

5.4. 局部内部类

方法中的类是局部内部类

成员方法中的内部类,不能有静态声明可以直接访问外部类的成员属性

局部内部类命名:外部类类名$1内部类类名

如果内部类类名重复,则为外部类类名$2内部类类名,以此类推

局部内部类不能使用权限修饰符,也不使用static

局部内部类不能有静态声明,静态方法中的局部内部类不能直接访问外部类的成员属性

5.5. 匿名内部类

当一个方法的参数需要传入一个类的对象时,均可以使用匿名内部类

一般情况下,是需要让你传入接口的实现类对象

此匿名内部类就等于该类(接口)的子类,只不过不用定义class了

匿名内部类类名:外部类类名$1,外部类类名$2,以此类推

6. 设计模式

6.1. 概述

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

前人栽树后人乘凉

一般代表了最佳实践

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

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

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

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

6.2. 饿汉模式

6.3. 懒汉模式

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值