JAVA学习笔记:第五天

本文介绍了Java的面向对象编程思想,包括类和对象的关系、垃圾回收机制、构造方法的作用及调用,还探讨了Java类库常用包、封装概念以及static关键字的应用,并简单提及了单例模式。
摘要由CSDN通过智能技术生成

面向对象编程思想

从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的 对象 ,作为系统的基本构成单位。
灵魂拷问:你是如何看待面向对象的?

面向对象编程

  • 面向对象的分析(OOA,Object Oriented Analysis)
  • 面向对象的设计(OOD,Object Oriented Design)
  • 面向对象的编程实现(OOP,Object Oriented Programming)
面向对象编程思想实际上就是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。
  • 分析系统中涉及的事务,根据“对象”抽象出“类”;
  • 找出对象共有的特点,并且在类中定义为属性;
  • 找出对象共有的行为,并且定义为类的方法。

[类修饰符] class 类名{
类的成员
… }
编码规范:
  • 类名单词首字母大写
  • 属性和方法第一个单词小写,其他单词首字母大写
属性和局部变量对比
局部变量
方法体中声明的变量、方法中的参数或代码块中声明的变量,都是局部变量
属性可以和局部变量同名,使用关键字 this 进行区分
属性在整个类中生效,无论在什么地方声明
局部变量必须先声明,然后才能使用

类和对象的关系

类是创建对象的模板,对象是类的实例。
  • 类(class) — 是对某一类事物的描述
  • 对象(object) — 是实际存在的某类事物的个体
类名 对象名 = new 构造方法();

对象的使用

在其他类中,使用对象名 点运算符 调用属性和方法
  • 引用类的属性:对象名.属性
  • 引用类的方法:对象名.方法名(实参)
类内 的方法中,访问本类的属性和方法可以 直接访问

垃圾回收机制

垃圾回收(Garbage Collection,GC),当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。
JVM的一个系统级线程会 自动释放该内存块。
垃圾回收机制作用于 堆内存 ,与栈内存无关。

会被回收的对象:

  1. 对象的引用被赋值为null
  2. 使用的匿名对象
  3. 超出生命周期的,

构造方法

一个类可以实例化出多个对象。
构造器 (构造方法/构造器,Constructor) 特点:
  • 构造方法名必须与类相同的名称
  • 不含返回值类型,也没有void
  • 不能在方法中用return语句返回一个值

构造方法作用

构造方法用来完成对象的创建,即完成对象的实例化
  • 在Java中,每个类都至少要有一个构造器
  • 一个类可以不写出构造方法,编译器会自动的给这个类增加一个构造器,该构造器没有任何参数,我们称之为“默认的空构造器”。
  • 编程者为该类定义了构造器,系统就不再提供默认的构造器

构造方法调用

  • 只能在本类的构造方法中,调用其它重载的构造方法
  • 使用this关键字,并且代码只能在构造方法的第一行
  • 根据实参确定调用的构造方法

Java类库中常用的包

  • java.lang     Java默认包,任何程序中,该包都被自动导入。
  • java.io    输入/输出操作有用的类的组成。

封装

封装关键字访问级别

 封装的常规使用

  • 将类中的属性用private关键字进行隐藏
  • 通过规定方法访问属性,一般通过set开头的共有方法对属性赋值,用get开头的共有方法得到属性的值
  • 在方法中加入控制语句,对不合法数据进行检查

静态:static关键字

注意: 只能修饰属性,不能修饰局部变量。
所有对象共享,称为 静态变量 类变量
不需要实例化,可以直接访问,称为 静态方法 类方法
静态方法里 只能直接访问静态 属性和方法。
两种方式访问:
  • 直接访问:类名.属性;
  • 实例化后访问:对象名.属性(不建议使用)

一个类中由static关键字修饰的,不包含在任何方法体中的代码块。

  • 当类被载入时,静态代码块被执行,且只被执行一次
  • 静态块经常用来进行类属性的初始化

单例模式

保证一个类仅 有一个实例 ,并提供一个访问它的全局访问点。
单例模式要点:
  • 某个类只能有一个实例;
  • 它必须自行创建这个示例;
  • 必须自行向整个系统提供这个实例。
单例模式实现:
1、拥有一个私有构造器;
2、提供一个自身静态私有的成员变量;
3、提供一个公有的静态公有的方法。
/ 饿汉式 牺牲空间获取较快时间 优点:速度快  缺点:占用内存空间

1. public class Singleton { 
2. //在自己内部定义自己的一个实例,只供内部调用
3. private static Singleton instance = new Singleton(); 
4. private Singleton(){ 
5. //do something 
6. } 
7. //这里提供了一个供外部访问本class的静态方法,可以直接访问
8. public static Singleton getInstance(){ 
9. return instance; 
10. } 
11. }

 //	懒汉式:牺牲时间换节省空间 缺点:速度慢 优点:占用较小内存空间
public class Singleton { 
	private static Singleton singleton;
	public static TestSingleton getstance() {
		if(singleton==null) {
			singleton =new Singleton();
			
		}
		return singleton;
	}
	
	private Singleton() {
		
	}
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值