一、 面向对象的程序设计
1、类、域、方法与实例对象
class :
【修饰词列表】 class 【extends 父类 】【implements 接口名称列表】
1)构造方法与类名相同;
2)构造方法不具有任何返回值类型;
3)任何一个类都有构造方法,如果没有显示的构造方法,系统会为类定义一个默认的构造方法(不含参数)一旦类中已经有定义的构造方法,则系统不会默认定义
JAVA数据类型中除了基本类型外,都是引用数据类型
2、 引用数据类型的4 个基本属性:类型, 变量名, 存储单元跟变量值
3、 finalize System.gc()
JAVA的实例对象是通过 垃圾回收机制 完成的, 我们可以调用System.gc() 去提醒JVM调用该实例对象的 finalize()成员方法进行回收, 但不保证在回收实例对象之前一定能够调用finalize()
4、继承性
1) 当前定义类与其直接父类的构造方法有约束关系
2) 在子类与父类的类型转换规则
->隐式类型转换, 即将子类型数据转换为父类型数据
->显式类型转换, 父类型的数据转换成子类型的数据(只有当父类型的引用指向子类的实例时, 才可以转换为该子类型)
// ok
A extends B
A a = new A();
B b = a;
A c = (A) b;
// error
A extedns B;
B b = new B();
A c = (A) b;
3) 子类实例对象跟父类实例对象之间的关系
子类实例对象可以被认为是父类实例对象, 但是反过来不行
5、多态性
1)静态多态性 :子类 重载
2)动态多态性: 子类 覆盖
6、 package
小例子
// J_Employee.java
package test1;
//import java.util.*;
public class J_Employee
{
public int m_workyear;
public J_Employee()
{
m_workyear = 1;
}
public void mb_printInfo()
{
System.out.println(m_workyear);
}
}
//J_Teacher.java
package test2;
import test1.J_Employee;
public class J_Teacher extends J_Employee
{
public int m_classhour;
public J_Teacher()
{
m_classhour = 96;
}
public void mb_printInfo()
{
System.out.println(m_workyear);
System.out.println(m_classhour);
}
}
//J_University.java
import test1.J_Employee;
import test2.J_Teacher;
public class J_University
{
public static void main(String args[])
{
J_Employee a = new J_Employee();
a.mb_printInfo();
a = new J_Teacher();
a.mb_printInfo();
}
}
javac -d . J_Employee.java
javac -d . J_Teacher.java
javac J_University.java
java J_University
(-d 目录 表示生成文件到 , "." 表示当前目录 前两个语句执行完后,会在相应目录中检测到相应的package 里面有生成的.class文件)
7、 封装性
public, protecte, default, private