Object Oriented 面向对象
面向对象
- 类 class
- 封装 encapsulation
- 继承 inheritance
面向对象的主要特性:
- 对象的标识(identity)
- 对象的状态(state)
- 对象的行为(behavior)
类之间的关系:
- 依赖 dependence(uses-a)
- 聚合 aggreation(has-a)
- 继承 inheritance(is-a)
隐式参数和显式参数
Test.setNumber(25);
- 其中
Test
为隐式(implicit)参数,25为显式(explicit)参数
显式参数是明显地列在方法声明中,隐式参数没有出现在方法声明中 - 在每一个方法中,可以用关键字this表示隐式参数。
这样可以将实例域和局部变量区分开
final实例域
final
修饰符大都应用于基本(primitive)类型域,或不可变(immutable)类的域(如果类中的每个方法都不会改变其对象,这个类就是一个不可变类。例如String
类)- 对于可变类
private final Date hireDate;
仅仅意味着储存在hireDate
变量中的对象引用在对象构造之后不能被改变,并不意味着hireDate
是一个常量。任何方法都可以对hireDate
引用的对象调用setTime
更改器。
static 静态
- 被赋予
static
属性的变量/方法,属于类级别的变量/方法,即该变量/方法在整个类中共享。即属于类且不属于类对象的变量和函数。 - 当通过对象修改
static
变量时,所以这个类下的对象中的static
变量都被修改。 static
的方法中只能存在static
变量
class {
static{
//该方法在创建类的时候构成
}
}
- 静态方法是一种不能向对象实施操作的方法,没有隐式的参数
Math.pow(x,a);
因为静态方法不能操作对象,所以不能在静态方法中访问实例域。但是,静态方法可以访问自身类中的静态域
下面两种情况下使用静态方法:
- 一个方法不需要访问对象状态,其所需参数都是通过显式参数提供.
例如:
Math.pow();
- 一个方法只需要访问类的静态域
Main方法
- Main方法是一个静态方法。其不对任何对象进行操作。每一个类可以有一个
main
方法
Tips:
可以在Employee
类中添加一个main
如果想要独立测试Employee
方法,只需要执行
java Empolyee
如果雇员类是一个更大型程序中的一部分,就可以使用下面这条语句运行程序
java Application
并且Employee
类中的main
方法永远不会执行
方法参数
- 一个方法不能修改一个基本数据类型的参数,而对象引用参数则可以。
- 一个方法不能让对象参数引用一个新的对象
- 对于java来说,对对象采用的不是引用调用而是值传递
对象构造
重载Overload
通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配来挑选出相应的方法
Java允许重载任何方法
权限
public
作用于变量/方法/类。在任何地方都可以调用。(default)
默认权限。作用于变量/方法/类。仅此包中可以调用。protected
作用于变量/方法。仅此包中和其子类中可以调用。private
作用于变量/方法/类。仅可以在此类中调用。