对象与类

面向对象程序设计概述

面向对象程序设计(简称OOP):面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。
对于一些规模比较小的问题,将其分解为过程的开发方式比较理想。而面向对象更加适用于解决规模较大的问题。

类是构造对象的模板或蓝图,由类构造对象的过程称为创建类的实例。
封装:封装是将数据和行为组合成一个包中,并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域,操纵数据的过程称为方法。

类之间的关系

  1. 依赖(uses-a):如果一个类的方法操纵另一个类的对象,就说一个类依赖与另一个类。
  2. 聚合(has-a):如一个A对象包含B对象,意味着类A的对象包含类B的对象。
  3. 继承(is-a):类A继承类B,会继承类B的方法,还会扩展额外拥有一些功能。

使用预定义类

要想使用对象,就必须首先构造对象,并制定其初始状态。Java中使用构造器来构造新实例并初始化对象。
一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。
Java对象都在堆中。

LocalDate类

  1. Date类:表示时间点
  2. LocalDate类:日历表示法
    LocalDate类不是用构造器构造的,而是使用静态工厂方法调用的。

用户自定义类

若干类组合使用的时候,只有一个类有main方法。在一个源文件中,只有一个公有类,可以有任意数目的非公有类。
可以用public标记实数域,但这是不提倡放入做法。public数据域允许程序中任何方法对其进行读取和修改,破坏了封装性。
构造器的特点:

  1. 构造器与类同名
  2. 每个类可以有一个以上的构造器
  3. 构造器可以有0个、1个或多个参数
  4. 构造器没有返回值
  5. 构造器总是伴随着new操作一起调用
    基于类的访问权限:方法可以访问所属类的所有对象的私有数据。

final实例域

final修饰符大都应用于基本类型域,或不可变类的域(如类中的每个方法都不会改变其对象,就是不可变类)。


对于可变的类,使用final修饰符会带来迷惑。

  1. private final StringBuilder strBuild
  2. 初始化:strBuild=new StringBuilder();
  3. 更改值:strBuild.append(LocalDate.now()+”,hello world”);
    Final关键字只是表示存储在strBuild变量中的对象引用不会再指示其他StringBuilder对象。

静态方法

静态方法是一种不能像对象实施操作的方法。
使用静态方法的情况:

  1. 一个方法不需要访问对象状态,其所需参数都是通过显示参数提供
  2. 一个方法只需要访问类的静态域

方法参数

  1. 按值调用:表示方法接受的是调用者提供的值
  2. 按引用调用:表示方法接受的是调用者提供的变量地址

Java中始终按值调用,方法得到的是所有参数值的一个拷贝,方法不能修改传递给它的任何参数变量的内容。Java中方法参数使用情况:

  1. 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)
  2. 一个方法可以改变与一个对象参数的状态
  3. 一个方法不能让对象参数引用一个新的对象

对象构造

重载

如果多个方法有相同的名字,不同参数,便产生重载。 编译器通过方法的参数类型和参数值来匹配方法。

finalize方法

Java垃圾收集器只会收集new出来的对象,一些特殊产生的对象需要通过finalize方法来回收。可以为任何一个类添加finalize方法。finalize方法将在垃圾回收期清除对象之前调用。

类设计技巧

  1. 一定要保证数据私有
  2. 一定要对数据进行初始化
  3. 不要在类中使用过多的基本类型
  4. 不是所有的域都需要独立的域访问器和域更改器
  5. 将职责过多的类进行分解
  6. 类名和方法名要能够体现他们的职责
  7. 优先使用不可变的类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值