9、类、对象、引用

类、对象、引用


  • C 纯面向过程;C++ 半面向过程;Java 纯面向对象
  • 面向过程:主要的关注点是实现的具体过程、因果关系【集成显卡的开发思路】
    1. 优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低
    2. 缺点:很难解决非常复杂的业务逻辑;导致软件元素之间的耦合度非常高,只要其中一环出问题,整个系统会受到影响,导致最终的软件扩展性差;由于没有独立体的概念,所以无法达到组件复用。
  • 面向对象:主要关注对象 [独立体] 能完成哪些功能【独立显卡的开发思路】
    • 优点:耦合度低,扩展力强。更容易解决现实世界中复杂的业务逻辑。组件复用性强
    • 缺点:前期投入成本较高,需要进行独立体的抽取,大量的系统分析与设计
  • 面向对象的“6原则”(设计模式6大原则)
单一职责原则Single Responsibility PrincipleSRP
接口隔离原则interface segregation principleISP
里氏替换原则liskov substitution principleLSP
依赖倒置原则dependence inversion principleDIP
开放封闭原则open closed principleOCP
迪米特法则/最少知道原则Law Of DemeterLOD
合成复用原则Composite Reuse principleCRP

面向对象的三大特征

  • 封装
  • 继承
  • 多态

2、 采用面向对象的方式开发一个软件,整个生命周期贯穿使用OO方式

OO:Object-Oriented

面向对象的分析(OOA)–> 面向对象的设计(OOD)–> 面向对象的编程(OOP)

3、 类和对象:

  • 什么是类?

    • 类在现实世界是不存在的,是一个模板,是人类大脑思考抽象的结果

    • 类代表一类事物,对象 A 与对象 B 之间存在共同特征,进行抽象得出类

    • 类描述的是对象的共同特征

    • 类主要描述【状态】和【动作】

      • 属性:描述对象的状态信息(通常采用变量的方式定义)
      • 方法:描述对象的动作信息
    • 类属于引用数据类型

  • 什么是对象?

    • 对象是实际的个体,现实世界中实际存在
    • 对象又称为实例/instance
    • 实例变量又称为对象变量
  • 类–【实例化】–>对象

  • 对象–【抽象化】–>类

4、 类的定义:(这里的定义并不完整)

[修饰符列表] class 类名{

}

[注] 因为工具类的方法都是静态的,不需要new对象,直接采用类名调用。也就是不需要调用工具类的构造方法,所以将构造方法设置成私有,即使想new对象也new不了。这是一种习惯不是规定。

5、 类体内、方法体外定义的变量是【成员变量】,成员变量若没有赋值,系统自动赋值,向0看齐

6、 引用数据类型:

String(string.class)SUN提供的
Student(Student.class)程序猿自定义的

【注】:Java中所有的 .class 都属于引用数据类型

7、 实例化对象的语法:new 类名()

new 是java语言当中的运算符,其作用是创建对象,在 JVM 堆内存中开辟新的内存空间

方法区内存在类加载时 .class 字节码文件代码被加载到该内存空间,存储代码片段、静态变量 方法区内存只有一个
栈内存存储(方法中的)局部变量,方法代码片段执行时,给该方法分配内存,在栈中压栈 堆内存只有一个
堆内存new 的对象在堆内存中存储 栈内存一个线程一个

在这里插入图片描述

8、 成员变量默认值:

数据类型默认值
byte、short、int、long0,0,0,0L
float、double0.0F,0.0
booleanfalse
char\u0000
引用数据类型null(空值)

10、

对象new 运算符在堆内存中开辟的内存空间称为对象
引用引用是一个变量,只不过这个变量保存了一个 java 对象的内存地址

11、java 语言中,程序猿不能直接操作堆内存,因为 java 没有指针。只能通过“引用”访问

堆内存中的对象内部的实例变量

12、变量分类:

  • 局部变量【方法体内声明】

  • 成员变量【方法体外声明】
    实例变量:前面修饰符没有 static
    静态变量/类变量:前面修饰符有static,存储在【方法区内存】中。

13、

局部变量中存储
成员变量中的实例变量内存的 java 对象中存储
成员变量中的静态变量方法区内存中存储

14、

  • 三块内存中变化最频繁的是【栈内存】

  • 最先有数据的是【方法区内存】

  • 垃圾回收器主要针对【堆内存】

15、垃圾回收器(自动垃圾回收机制,GC机制)什么时候考虑将某个java对象的内存回收呢?

没有更多的引用指向某个堆内存中的java对象时,该对象称为垃圾数据,会被垃圾回收器回收

以下程序编译可以通过,因为符合语法,但运行报 NullPointerException

public class OOTest04{
	public static void main(String[] args){
		Customer c = new Customer();
		System.out.println(c.id);
		c = null;
	System.out.println(c.id);
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值