1.面向对象与面向过程
1)面向过程:对需求做整体制作
2)面向对象:对需求做分块设计,再组装
如果需求调整,面向对象的设计方式处理更快,同时有利于多人协同作业。
2.封装性、继承性、多态性
1)封装性
方便一个功能的使用,而不需要了解功能实现的细节;
可以对封装在一个整体内的变量及方法进行权限设定,如使用private(私有),如果要获得这个属性或设置这个属性,需要写getter()或setter()方法。
2)继承性
继承父类的子类,就具备了父类的全部属性和方法,有利于程序的修改。
java常规类只支持单继承,接口方法支持多继承。
3)多态性
包括方法重载和对象多态,
方法重载:在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同;
对象多态:子类对象可以与父类对象进行相互转换,而且根据其使用的子类的不同,完成的功能也不同。
3.类的定义
class 类的名称{
数据类型 数据名称; // 声明成员变量(属性)
...;
public 返回的数据类型 方法名([数据类型 参数1, 数据类型 参数2, ...]){ // 定义方法
执行语句;
[return 返回值;]
}
}
4.栈、堆空间
每新建一个类对象时,每个对象会分别占据自己的栈内存、堆内存;
一段堆内存空间可以同时被多个栈内存指向,实际上就是引用的传递;
注意:一个栈内存空间只能指向一个堆内存空间,如果要想再指向其他的堆内存空间,则必须先断开已有的指向才能分配新的指向。
5.构造方法
在类产生一个新对象时(有new出现时,如果仅仅声明,不调用),就会调用构造方法。
构造方法和普通方法的定义相似,但有以下三点要求:
1)构造方法名称必须也类名称相同;
2)构造方法不能声明返回值数据类型;
3)构造方法内部不同使用return语句。
定义格式如下,
class 类名称{
访问权限 类名称(数据类型 参数1, 数据类型 参数2, ...){
执行语句;
}
}
访问权限有3种:default(默认,什么都不写),private, public。
代码示例如下,
package java_book;
public class testInit {
public static void main(String[] args) {
System.out.println("声明对象,");
Person p1 = null; // 声明对象时,不执行构造函数
System.out.println("实例化对象,");
Person p2 = new Person(); // 实例化对象时,执行构造函数
}
}
class Person{
public Person() {
System.out.println("一个新的Person对象产生");
}
}
运行结果如下,
声明对象,
实例化对象,
一个新的Person对象产生
注意:构造方法也能实现方法重载
6.匿名对象
示例如下,
new Person("张三", 28).tell()
匿名对象在实际开发中基本上都是作为其他类实例化对象的参数传播的,匿名对象实际上就是一个堆内存空间,对象不管是匿名还是非匿名,都必须在开辟堆内存空间之后才可以使用。
7.引用传递
1)引用作为方法参数来传递,方法执行完成后,断开本次传递的引用连接
2)对象引用的传递
在对象引用传递上也可以在一个类中接收自己本类对象的实例,而且接收完之后,可以方便地通过此对象直接进行本类中封装属性的访问。
8.this关键字
1)可以表示类中的属性
如,this.name; this.age;
2)可以直接调用本类的构造方法
如,this();
构造方法是在实例化对象时被自动调用的,在类的所有方法中,只有构造方法是被优先调用的,在构造方法中使用this调用构造方法必须也只能放在构造方法的第1行;而且必须有一个构造方法作为出口,即至少有一个构造方法不使用this()。
3)this表示当前对象
如,this.setName(name);
9.static关键字
如果现在某个对象的有些属性希望被所有对象共享,则必须将其声明为static属性;如果一个类中的方法想由类调用,则可以声明为static方法。
在程序中使用static声明属性,则此属性称为全局属性(有些也称为静态属性)。
一个类中的公共属性由一个对象就可以修改,明显是不合适的,即一个对象修改了这个类的属性,其他所有这个类的对象的属性都发生改变,所以类的公共属性应该由类进行修改是最合适的,因为用户不知道一个类到底有多少个对象产生。
非static声明的方法可以调用static声明的方法,反过来则不行。
10.public static void main(String[] args)的含义
public: 表示此方法可以被外部调用
static: 表示此方法可以由类名称直接调用
void: 主方法是程序的起点,所以不需要任何的返回值
main: 系统规定好默认调用的方法名称,执行时默认找到main方法名称
String[] args: 表示的是运行时的参数,参数传递的形式为:“java类名称 参数1 参数2 参数3”
本章小结