面向对象编程
- 类
(1)类的定义:类就是对象的模板,对象就是类的一个实例。
类由属性和方法构成:
对象的特征再类中表示为成员变量,称为类的属性。
类的方法是对象执行操作的一种规范。方法指定以何种方法操作对象的数据,是操作的实际实现。
- 类的实现:
[访问符][修饰符]class<类名>{
[属性]
[方法]
}
(3)对象的创建
1.声明该类类型的一个变量。
2.创建该对象(在内存中为该对象分配地址空间),并把该对象的引用赋给声明好的变量。通过new运算符实现。
(4)类的构造方法
1.构造方法是一种特殊的方法,在对象被创建时用来初始化对象;
2.它具有它所在的类完全一样的名字;
3.构造方法和类的方法类似,只不过构造方法没有返回类型;
4.构造方法的任务是初始化一个对象的内部状态;
5.如果在Java程序中没有定义任何的构造方法则编译器将会自动加上一个不带任何参数的构造方法即缺省构造方法(默认);
(5)this对象的使用
this关键字代表当前所在类的对象,即本类对象,用于解决变量的命名冲突和不确定性问题;在没有同名的情况下,可以直接使用属性的名字。
- 参数传递
按值传递
按值传递将要传递的参数的值传递给被调方法,被调方法,被调方法通过创建一份新的内存拷贝来存储传递的值,然后再内存的拷贝上进行数值操作,所以按值传递不会改变原始参数的值。一般的参数数据类型(数值,字符)会自动按值传递。
引用传递
引用传递是将参数的引用方法传递给被调方法,被调方法通过传递的引用值获取其指向的内存空间,从而再原始内存空间上直接进行操作,即实参和形参指向内存中同一空间。一般传递的参数为对象时会自动采用引用传递。
(7).函数重载
在Java程序中,如果同一个类中有两个同名方法,则该方法的签名(参数数量、参数类型和类型排列顺序)是相同的,并对该方法进行编译。但在
在Java中允许有多个⽅方法的重复名称。只要⽅方法签名保证是不同的,这个特性就称为方法重载。
⽅法重载应遵循以下两条规则:
⽅法名相同
参数列表(数量、类型、顺序)不同;
- .定义和使用构造函数
构造函数定义:
- 函数名称和类的名称相同。
- 不含返回类型
定义了构造函数之后,再实例化对象时必须传入相同的参数列表,否则会报错。
二.静态变量
静态变量和⽅方法
在Java中,可以将一些成员限制为“类相关的”,而上一节描述的成员是“实例相关的”。
“实例相关”的成员描述了单个实例的状态和⽅法,这使得⽤必须通过类的实例来完成;
“类相关”是在类的成员之前添加关键字“static”,可以从类名直接访问。
(类的静态变量和静态方法在内存中对于类的所有对象只有无痕的副本)
- 封装
封装定义:封装是将对象的属性(状态)与方法(⾏为)结合起来,并尽可能隐藏对象的内部细节,成为一个不可分割的单元(即对象)对外形成边界,只保留了有限的外部联系,使其与外部发生联系。
原则
对象的外部部分不能随意访问对象的内部数据,有效地避免了外部错误的“交叉感染”。
数据隐藏可以提高系统的安全性,将软件错误本地化,降低错误检测和故障处理的难度。
- 包
类太多不好管理,以文件夹进行管理的方法叫包。
- 访问修饰符
Java定义了private、protected和public的访问修饰符。同时,它也定义了一个缺省访问级别,⽤于声
明类、属性和方法的访问权限。指定访问修饰符的限制是良好“封装”的关键:
1. 设置public访问修饰符,类的成员可以被同一个包或不同包中的所有类访问,也就是说,public访问修饰符可以将类的特征公用于任何类;
2. 使⽤protected访问修饰符允许访问同一个包中的所有类,并允许访问不同包中的⼦类;
3.如果一个类或类成员前面没有访问修饰符,则默认为友好。它们获得默认的访问权限,默认情况下可以被同一包中的其他类访问;
4. 私有访问修饰符是最具限制性的访问修饰符。声明为private的成员只能由该类的其他成员访问,不能在类外部看到。
- 类间关系
- 继承
在Java中,继承的类称为父类或超类,继承的类称为子类或派生类。
在Java中,关键字“extends”从表继承,后面跟着父类的类名
- 重写
当一个子类继承了一个父类时,可以再子类中直接使用父类的属性和方法。如果父类的方法无法满足子类的需求则可以再子类对父类的方法进行改造,也称作重写。重写是java多态性的另一种体现。
重写的原则:
重写方法的签名必须与重写方法的签名完全匹配
重写后的⽅方法的返回值必须与重写后的⽅方法或其类的返回值相同;
被重写的⽅方法抛出的异常必须与被重写的⽅方法或其类抛出的异常一致;
私有法不可重写
子类重写父类方法的过程中,可访问性只能一样或变更公开。
七.final
⽤修改类,方法和变量,这意味着“不可变的和最终的”。
装饰类:声明为final的类不能被继承。“final”类中的所有方法都隐式指定为final。
修改变量:声明为final的变量是常量,在定义时必须给它一个初始值。变量一旦初始化,就不能再更改了。
修改方法:声明为final的方法不能被类重写
- Object
对象类是所有类的顶级类。在Java系统中,所有类都直接或间接地继承对象类。对象类包含所有Java类的公共属性和方法,这些属性和⽅方法可以直接在任何类中直接使用。
八.对象类型转换
自动转换
当⼦类转换为⽗类(或者实现类转换为⼝)时,可以自动完成。转换将自动完成。
强制转换
当⽗类转换为⼦类(或者然后⼝转换为实现类)时,必须强制转换。



