面向对象
类,对象,属性,方法,构造方法,重载,封装,继承,重写,访问权限,多态,抽象类,接口,内部类,static,final,instanceof
类与对象
类
即使用JAVA的程序表示生活中概念的“类别”;
public class Person {
}
类也可以理解为JAVA的程序的某种数据类型;
Person p;
对象
是类的具体表现,或具体存在;
对象,也称之为“实例(intance)”;
在JAVA中可以根据类创建对象,创建的过程称之为:实例化
p = new Person();
类是对象的抽象的描述,对象是类的具体的表现形态;
属性与方法
每一个类都可以有若干个属性或方法,当某个类定义了一些属性和方法后,该类的每个对象都将具有这些属性和方法;
属性与方法是用于描述类的特征的,由于都直接定义在某个类中,所以,它们都是类的成员(member);
public class Person {
public String mName;
public void run() {
}
}
使用属性,可以描述那些使用值进行量化的特征,通常是一个名词;
使用方法,可以描述一些行为模式,或者动作,通常是一些动词;
计算机的组成
- 运算器
- 控制器
- 存储器
- 输入设备
- 输出设备
存储器
- 主要存储器 / 主存 / 内部存储器 / 内存
- 辅助存储器 / 辅存 / 外部存储器 / 外存
内存
ROM
ROM = Read Only Memory
ROM是一种只读型存储器,即只能读取内容,不可以写入内容,通常表现为PC机上的COMS芯片;
RAM
RAM = Random Access Memory
RAM是一种随机存取存储器,既可以读,也可以写,是整个计算机中存取速度仅此于CACHE的存储设备;
RAM的典型表现就是内存条;
RAM是整个计算机中,除了CACHE以外,CPU能够直接访问的 唯一 硬件;所以,它是CPU与其它所有设备之间交换数据的桥梁;
RAM用于存储正在执行的程序和数据;
RAM一旦断电,所有数据将被清空;
CACHE
CACHE是高速缓存,是整个计算机系统中存取速度最快的存储设备,也是容量最小的存储设备;
CACHE是集成在CPU内部的;
CACHE是用于存储运算的中间结果的;
构造方法
在一个类中,与类的名称相同,不声明返回值类型的方法,叫做构造方法;
public class Person {
public Person() {
}
}
构造方法在创建类的对象时,会被执行,通常语法为:
Person p = new Person();
每个类中都有构造方法,如果开发者没有显式的声明构造方法,则编译器(将*.java源文件编译成对应的*.class文件的工具)会自动的添加无参数的构造方法;所以,以下2段代码是等效的:
public class Person {
}
public class Person {
public Person() {
}
}
如果开发者已经显式的声明了构造方法,则编译器不会再添加构造方法;
在同一个类中,构造方法是可以重载的,例如:
public class Person {
public Person() {
}
public Person(String name) {
}
}
使用构造方法,可以快速的创建对象并指定对象的某些属性值,例如,普通的使用情况:
public class Person {
public String name;
public int age;
}
Person p = new Person();
p.name = "Jack";
p.age = 18;
如果使用了构造方法:
public class Person {
public String name;
public int age;
public Person(String personName, int personAge) {
name = personName;
age = personAge;
}
}
Person p = new Person("Jack", 18);
由于显式的声明构造方法后,编译器不会再自动添加构造方法,所以,使用构造方法,也可以对创建对象的过程进行约束,例如以上代码就约束了创建对象时必须指定name属性和age属性的值。
所以,在什么时候会需要显式的定义构造方法:
- 快速的确定类的某些属性的属性值
- 强制约束必须指定某些参数
事实上,每个构造方法的作用是创建类的对象,在构造方法中,都会调用父类的构造方法,即:先创建出服父类的对象!所以,以下3段代码时等效的:
public class Person {
}
public class Person {
public Person() {
}
}
public class Person {
public Person() {
super(); // 调用父类的构造方法,该语句只能出现在子类的构造方法中,并且必须是第1条有效语句
// ???
}
}
重载
重载(Overload)是在同一个类里,允许存在多个同名的方法,这些方法必须有不同的参数列表,例如参数的数量不同,或者参数的数据类型不同,或者参数的顺序不同,例如;
public class Test {
public void run() {
}
// 以下重载会发生冲突,重载无视返回值类型
// public int run() {
// return 0;
// }
public void run(int i) {
}
public void run(String str) {
}
public void run(String str, int i) {
}
public void run(int i, String str) {
}
public void run(String str, int i, int j) {
}
public void run(int i, int j, String str) {
}
// 以下重载会发生冲突,重载无视参数的名称,只关心参数的数据类型
// public void run(int j, int i, String str) {
// }
}