面向对象程序设计OOP
由对象组成,每个对象包含对用户公开的特定部分和隐藏的实现部分
我们关心于其数据和功能,不必关心其功能具体实现部分
类与对象
类构造对象,创建类的实例
test x;
这样的x即是对象变量,对象变量并没有实际包含一个对象,而是仅仅引用一个对象
真正的对象在堆中,而x在栈中;
用户自定义类
在设计类的时候,一般将所有的数据域都设置为私有域。
方法公有 私有
类中的方法大致有两种
访问器方法-get,更改器方法-set
- 从构造器开始
class liduoan
{
private String name;
private int age;
public liduoan(String n, int x)
{
name = n;
age = x;
}
public void setage(int n)
{
age+=n;
}
}
构造器和类同名
每个类可以有一个及以上的构造器
构造器可以有0、1、多个参数
构造器没有返回值
构造器通过new
来调用
方法及 隐式参数 显式参数
在java中,所有的方法都在类的内部定义。
如上面的setage
方法
该方法有两个参数,第一个参数为隐式参数,即出现在方法名前的类对象
第二个参数为()
中的数值参数
隐式参数又被称为方法调用的目标或接收者
基于类的访问权限理解
方法可以访问所调用对象的私有数据
类的方法可以访问了类的任何一个对象的私有域
final实例域
private final String name
这样的类
构建对象时必须初始化这样的域,也就是确保在一个构造器执行之后,这个域的值被设置,并且在之后不可再对其进行修改。
静态域 静态方法
每个类中仅可以存在一个static
的数据域。
静态域是属于类,不属于独立的对象
静态域又称为类域,属于类,不是属于对象。
常用的 静态常量!
public ststic final double PI=3.1415926;
这样可以使用类.PI来获得这个常量。
一般我们都将数据域作为私有的,上述中作为私有是因为有final
限制住了
使得后面是不可能更改PI
的值。
静态方法!!一种对类实施操作的方法!即不可以对对象实施操作
静态方法不可以访问自己的实例域,因为不对对象操作
但是可以访问自己的静态域,
静态方法使用情况:
当一个方法不需要访问对象状态,其所需参数都是通过显式参数提供
当一个方法仅需要访问类的静态域。
工厂方法。。。。
包
import java.util.*;
导入类包方法;
package java.awt;
打开包 把类放到包里面
类的部分设计技巧
- 保证数据私有
- 保证数据初始化
- 不要过多的使用基本数据类型
- 尝试分解类
- 类名和方法名要体现他们的职责
- 优先使用不可变的类