Java
类和对象
1.类和对象的关系
类(class):具有相同或相似性质的对象的抽象。忽略事物的非本质特征,只注意与当前目标有关的本质特征。
对象的抽象是类,类的实例是对象
2.类的定义及访问
2.1 类的定义
类的修饰符有:public、 abstract、final和friendly,默认方式是friendly
- public: 将一个类声明为公共类,可被任何对象访问;
- abstract: 将一个类声明为抽象类,没有实现的方法,需要子类实现方法;
- final: 最终类,不能被继承;
- friendly: 只有在相同包中的对象中才能使用。
package TankWar;
public class Double_Game implements Runnable{
public void run() {
try {
Method.double_game();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
2.2成员变量的定义
成员变量:指类的一些属性定义,标志类的静态特征
权限修饰符有:public、private、protected、default(一般省略)
- public: 公有类型,省略时默认有public,可以被外部对象访问;
- private: 私有类型,只允许在类内部的方法中使用,要用外部访问,需要通过构造函数间接访问;
- protected: 受保护类型,可被类自身及子类访问, 即使子类在不同的包中也可以访问;
- default: 不加任何的修饰符,通常称为“默认访问权限”或“包访问权限”,只允许在同一个包中访问。
2.3方法的定义
修饰符:public、private、protected、final、static、synchronize
final: 该方法不能重载;
static: 不需要实例化就能使用的方法;
synchronize: 同步修饰符,多线程编程中,用于在运行前,对方法加锁,防止其他线程访问,运行结束后解锁。
2.4方法的参数传递
- 值传递
将参数值复制为子程序的参数,对子程序参数的改变不影响调用子程序的参数。 - 引用传递
将参数的引用传递给子程序的参数,对子程序参数的改变会影响到调用子程序的参数。
3. 类的实例化
- 创建对象
Tank ene; //声明对象
ene = new Tank(x, 31,dir,Group.Enemy, tf); //创建对象
- 对象成员的使用
通过运算符"."实现对变量和方法的调用。
变量和方法可以通过设定访问权限来限制其他对象对他的访问
ene.setIndex(tf.EnemyId++);
- 对象资源的回收
Java技术提供了垃圾收集器,当Java虚拟机处于空闲循环时,垃圾收集器会自动检查每一块分配出去的内存空间,然后自动回收每一块可以回收的无用的内存块,有效地防止了内存泄漏的出现,并极大可能地节省了宝贵的内存问题。
4. 构造方法
参考c++
5. 类的封装
封装目的是增强安全性和简化操作。
6. 类的继承
Java中不支持类之间的多重继承,及不允许一个子类继承多个父类。
6.1 继承的实现
如果缺省extends,则该类是java.lang.Object的子类。子类可以继承父类访问权限为public、protected、default的成员变量和方法,但不能继承访问权限为private的。
6.2 方法重写
又叫方法覆盖,指在子类中重新定义父类中已有的方法。
条件:
- 方法名、参数和返回值完全相同;
- 访问控制访问(public, protected, private, default)不能被缩小;
- 抛出的异常不能被扩大。
6.3 this()和super()的使用
this():this()方法代表一个构造方法对其他构造方法的调用。this()必须放在构造方法的第一行。
super:当一个子类调用super()时,它调用它的直接超类的构造方法。super()必须是子类构造方法中的第一个执行语句。
this与this()、super与super()
this和super指的是引用对象;this指引用本对象,super指引用对象的父类;
举例:this.print(); super.print();
this()和super()指调用构造方法;this()指调用本类的构造方法;super()指调用父类的构造方法;
举例:this(); super();
6.4 finalize()方法的使用
在对对象进行垃圾收集前,Java运行时系统会自动调用对象的finalize()方法来释放系统资源。
finalize()方法是在java.lang.Object中实现的,在用户自定义的类中,它可以被覆盖,但一般在最后要调用父类的finalize()方法来消除对象的所有资源
finalize()方法必须按以下方式声明。
protected void finalize() throws throwable()
{
......
super.finalize();
}
7. 类的多态
多态是指一个方法只能有一个名称,但可以有多个同名的方法。
多态性:不同的对象收到同一消息可以产生不同的结果。
参考资料:
https://www.cnblogs.com/sunyubin/p/9721873.html
《Java程序设计与项目案例教程》