- 面向对象的三条主线:
- Java类及类的成员:属性、方法、构造器;代码块、内部类
- 面向对象的三大特征:封装性、继承性、多态性、(抽象性)
- 其它关键字:this、super、static、final、abstract、interface、package、import
- 举例代码
- 如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性(非static),意味着,如果我们修改一个对象的属性a,则不影响另外一个对象的属性a的值。
- 属性和局部变量的相同点和不同点:
- 相同点
- 定义变量的格式相同:数据类型 变量名=变量值;
- 先声明,后使用
- 变量都有其对应的作用域
- 不同点
- 在类中声明的位置不同
- 属性:直接定义在类的一对{}内
- 局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
- 关于权限修饰符的不同
- 属性:可以在声明属性时,指明其权限,使用权限修饰符,private,public,缺省,protected
- 局部变量:不可以使用权限修饰符
- 默认初始化值的情况不同
- 属性:根据其类型,都有默认初始化值
- 局部变量:没有默认初始化值,在调用局部变量之前一定要显式初始化,特别地,形参在调用时赋值即可
- 在内存中加载的位置不同
- 属性:加载到堆空间
- 局部变量:加载到栈空间
- 在类中声明的位置不同
- 相同点
- 方法的声明
- 权限修饰符:private,public,缺省,protected(见封装性)
- 返回值类型:有返回值和无返回值
- 如果有返回值,必须在方法声明时,指定返回值的类型,同时,方法中需要使用return关键字指明返回类型的常量或变量
- 如果没有返回值,声明时使用void来表示,通常没有返回值的方法就不需要使用return,如果使用只能是return;
- 方法名:属于标识符,遵循标识符的规则和规范
- 形参列表:方法可声明0个、1个或多个形参列表
- 方法体:方法功能的体现
- return关键字:
- 使用范围:使用在方法体重
- 作用:结束方法,针对有返回值类型的方法,使用return 方法返回所需要的的数据
- return后不可以再声明执行语句
- 方法的使用中,可以调用当前类的属性或方法,但是方法里面不可以再定义新的方法。
- 匿名对象:
- 创建的对象没有显式的赋给一个变量名,匿名对象只能调用一次
- 方法的重载
- 在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可
- 可变个数形参的方法
- 格式:数据类型…变量名
- 当调用可变个数形参的方法时,传入的参数个数可以是:0个,1个,2个。。。
- 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
- 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载,系统会认为是一样的,不能共存
- 可变个数形参在声明时必须在末尾,public void show(int I, String … strs);且最多只能声明一个可变形参
- 方法参数的值传递机制
- 如果变量是基本数据类型,此时赋值的是变量所保存的数据值
- 如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值
- 方法的形参传递机制:如果是基本数据类型,传递的是实际存储的值,原始的值不会发生变化,如果是引用数据类型,传递的是地址值,原始的值会发生变化
- 封装性的体现:需要权限修饰符来配合
- 将类的属性私有化(private),同时提供公共的(public)方法来获取(getxxx)和设置(setxxx)属性的值
- 不对外暴露的私有的方法
- 4种权限修饰符:(从小到大排序)private、缺省、protected、public,可以用来修饰类的内部结构,修饰类只能用使用缺省和public
修饰符 |
内部类 |
同一个包 |
不同包的子类 |
同一个工程 |
private |
yes |
|||
缺省 |
yes |
yes |
||
protected |
yes |
yes |
yes |
|
public |
yes |
yes |
yes |
yes |
- 构造器的使用:
- 作用是创建对象,初始化对象的信息
- 如果没有显式的定义类的构造器,则系统默认提供一个空参的构造器,可以定义多个构造器
- 格式:权限修饰符 类名(形参列表){ }
- 一个类中定义的多个构造器,彼此构成重载,一旦显式的定义了类的构造器,系统就不再提供默认的构造器了
- 一个类中至少会有一个构造器
- 属性赋值的先后顺序
- 默认初始化--显式初始化--构造器中初始化--对象.方法
- this关键字的使用:在类的方法中,我们可以使用this.属性或者this.方法的方式,调用当前对象属性或方法,但是,通常情况下选择省略this.,特殊情况下不能省,即方法的形参和类的属性重名时,要显式的使用this.属性的方式
- this修饰或调用构造器,在一个构造器里面调另一个构造器,使用this(形参列表),不能自己调用自己
- 如果一个类中有n个构造器,最多有n-1个构造器使用this(形参列表)
- this(形参列表)必须声明在当前构造器的首行,因此最多只能声明一个this(形参列表)