对象:客观世界中存在的人、事、物等实体,例如:鸟,人,鱼等.
对象和类:对象是符合某种类(Class)所产生出来的实例,对象具有属性和方法,在面向对象程序设计中,使用属性来描述对象的状态,使用方法来处理对象的行为.
类:类是同一事物的统称,是一个抽象的概念.
面向对象程序设计的特点: 封装、继承、多态、(抽象)
注意:文件名必须和公有类(public)的类名相同
类体:由成员方法和成员变量构成.
变量的有效范围:
成员变量:在类中声明, 在整个类中有效
局部变量:在方法内或方法内的复合代码块
如: public void f(){
int i;
}
{
int j;
}
i, j 只在对应方法或代码块内有效
注意:成员变量有默认初始值, 局部变量没有默认初始值
成员方法:有方法的声明和方法体, 方法可以重载.
注意:返回值类型不能作为区分重载的标志, 成员变量的操作只能放在方法中.
UML(Unified Modeling Language Diagram):使用一个长方形描述一个类的主要构成,将长方形垂直的分为三层.
第一层:名字层,抽象类(斜体字形表示)、具体类(常规字形表示)
第二层:变量层,列出类的成员变量, 格式是“变量名:类型”
第三层:方法层,列出类的方法, 格式是“方法名:类型”
构造方法:用于对对象中的所有成员变量进行初始化, 它的名字必须和类名完全相同, 没有返回值(不需要用 void 进行标识),类会提供默认的无参构造函数,如果类定义了一个或多个构造函数, 则不会提供无参构造函数.
对象创建: 1.声明、 2. 实例化
声明: 类名 对象名;
Apple redApple;
实例化: 对象名 = new 构造函数名([参数列表]);
redApple = new Apple();
注意:对象创建后, 对象引用在栈内存, 对象实体在堆内存
对象的使用: 对象.成员变量(该变量访问权限为public)
对象.成员方法();
对象的销毁: 在java中不像C++中一样需要手动释放内存, java提供垃圾回收机制可以自动判断对象是否还在使用. java提供了一个名为finalize()的方法,用于在对象被垃圾回收机制销毁之前执行一些资源回收工作, 由垃圾回收机制调用,也可以重写,但是何时调用是不可预测的, 每个类只有一个finalize()方法.
注意:java程序以类为基本单位.
注意:java中的参数传递方式只有一种, 值传递.
值传递:
基本数据类型的值传递:传递的是副本, 实参值不会被改变. 实参的级别不能高于形参的级别, 如:不能向形参为int的传递一个float类型的值.
引用类型的值传递:传递的是实参中存放的“引用”(地址), 如果改变形参, 那实参也会相应改变.
注意:引用类型传递以为着两个变量(形参和实参)指向同一个对象的引用地址, 这两个变量操作的是同一个对象.
对象的组合关系:类A中的成员变量有另外一个B类对象
public class A{
private int name;
private B b;
}
对象的依赖关系: A类中的某个方法参数用B类声明或返回类型是B类对象.
public class A{
public void fun(B b){
}
}
实例方法和类方法: 方法类型前不使用static修饰的是实例方法, 使用static修饰的是类方法, 也叫静态方法.
注意:实例方法用对象调用, 类方法直接通过类名调用.
this关键字: this表示引用当前对象, 可以出现在实例方法和构造方法中,当成员变量和局部变量名字相同时, 必须使用this关键字区别.
如: class A{
public void setName(String name){
this.name = name;
}
}
java中包的概念: 一种区别类的命名空间机制
包的用途: 将功能相近的类放在同一个包中, 在一定程度上, 包可以避免命名冲突, protected 的访问权限是以包为单位的.
注意:在实际编程中, 尽量保证一个类只做一件事情
访问权限修饰符: private protected public default
注意:如果不写访问权限修饰符号的类被称为友好(friendly)类或默认(default)类.
1. 一般private 表示在类内部可以调用,类外部不可见.
2. 声明属性尽可能使用私有, 这样才体现出封装性.
3. 一个源文件可以存在多个类, 但只能有一个public类, 其他类只能是默认修饰.
4. 不建议使用非共有类, 即所有类都是公有的, 并且一个源文件一个类.