oo
面向对象的基本思想:
对象:
系统中描述客观事物的实体,构建系统的一个基本单位,一个对象由一组属性和这组属性进行操作的一组服务组成,通过new对类进行实例化
对象的生命周期:
当不存在对一个对象引用,该对象成为一个无用对象,java的垃圾收集器自动扫描对象的动态内存区,把没有引用的对象作为垃圾收集起来并释放,调用System.gc()强制要求进行内存回收,但只是提醒JVM进行内存回收,真正的内存回收发生时间不确定
java中内存回收的线程是一个优先级较低的线程,防止对程序本身运行的干扰
类:
类是对所有对象的统一描述,包含属性和方法两个部分,独立的程序单位,包括属性和方法两个主要部分
成员变量限定词:
static:静态变量(类变量)
transient:暂时性变量,用于对象存档,对象的串行化
volatile:贡献变量,用于并发线程的共享
方法声明中限定词的含义:
static:类方法,可以通过类名直接调用
abstract:抽象方法,没有方法体
final:方法不能被重写
native:集成其他语言的代码
synchronized:控制多个并发线程的访问
方法的声明:
方法名,返回类型,外部参数,参数可以是简单数据类型,可以是引用数据类型
构造函数:
特殊的方法,java中每个类都有构造函数.初始化类的对象,构造函数具有和类名相同的名称,不返回任何数据类型
重载经常用于构造函数
只能new调用
一个类可以有多个构造函数
无参的构造函数时默认的
只要定义了一个不是默认的构造函数,则无无参构造
封装:
隐藏对象内部细节,保留有限的接口和方法与外界进行交互,封装是使对象以外的部分不随意访问和操作对象内部属性
避免外界对对象内部属性的破坏
可以通过对类成员设置一定访问权限,实现类中成员的信息隐藏
package com.collction;
public class Test1{
private double amount; //设置权限
public void withdraw(double amount){
if (amount<=this.amount) {
this.amount -= amount;
}
}
public void deposit(double amount){
if (amount<=0)
return;
this.amount +=amount;
}
private double getAmount(){ //只能够获取,不能够设置
return this.amount;
}
}
继承:
子类对象拥有父类全部属性与方法,子类对父类的继承
父类可以有多个子类,一个子类只有一个父类,为单继承
继承实现了代码复用
java中所有的类直接或间接继承java.lang.Object
子类不能继承父类中访问权限为private成员变量和方法
可以重写父类方法,命名和父类同名非成员变量
java中通过super实现父类成员的访问,super用来引用当前对象的父类
super
super.variable:访问父类被隐藏的成员变量的方法
public class Test1{
public int a;
}
class T2 extends Test1{
private int a;
void test(){
this.a = 2; //这是调用T2中的a
super.a =10;//父类的Test1
}
}
super.Method():调用父类构造方法
super():父类构造函数必须在子类构造函数第一行调用,方法调用无此限制
多态:
对象的多态性:父类中定义的属性或方法被子类继承之后,具有不同数据类型或表示不同行为,使得同一属性或方法在各个子类中具有不同语义
java多态性通过重写实现,子类对父类进行编写子类中方法和父类一样的方法名.返回类型,返回参数
需要父类已有放入方法,通过super关键字引用当前类的父类
子类函数的访问权限不能低于父类
单一职责原则
Single Responsibility principle,,简称是SRP
一个类只负责一项职责,高内聚,低耦合的实现
里氏替换原则 :子类可以扩展父类的功能,但不能改变父类原有的功能
多态的特性,可以任意重写父类方法,会增加代码出问题几率
1.子类可以实现父类抽象方法,不能覆盖父类非抽象方法
2.子类可以增加自有方法
3.子类覆盖或实现父类方法,方法的形参要比父类方法输入参数更宽松
子类方法实现父类抽象方法时,方法的返回值要比父类更严格
依赖倒置原则:
高层级和低层级都依赖于抽象,抽象不依赖于细节,细节依赖于抽象
抽象在Java中指interface和抽象类,都不能实例化
细节是具体的实现,实现类可以通过new实例化
依赖的传递:
接口声明
构造函数中传递
通过setter方法传递
开闭原则:
通过继承或者多态,实现在不改变源代码的情况下变更它的功能
迪米特法则:
一个对象最好避免接触其他的对象
相关阅读
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录
BloomFilter原理简介 将数值m用k个不同的hash函数散列到k个位,这个k个位数值置位1就表示数值m。 很明显,就是将数字转换成多个bit
前言: 近来在模仿写一个app,可惜只有apk,没找到源码,只好进行反编译,特记录于此,供人参考。 测试环境:win10 64位 工具: apktool(链接
sitemap在网站收录过程中的作用不容忽视,他是保证你网站内页被收录的最佳助手。也许你会发出现,我的首页已经被GOOGLE收录了,但是内
本文参考 https://www.imooc.com/learn/856 所做读书笔记 1 课程介绍 1.1 课程安排 为什么需要使用消息中间件