1、对象和类的概念:
- 对象是具体的事物;类是对对象的抽象
- 类可以看成一类对象的模板,对象可以看成该类的一个具体实例
- 类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法
2、类的定义方式:
// 每一个源文件必须有且只有一个public class,并且类名和文件名保持一致!
public class Car {
}
class Tyre { // 一个Java文件可以同时定义多个class
}
class Engine {
}
class Seat {
}
这是一个空类,没有任何实际意义。我们定义类的时候需要定义类的具体信息。
3、方法:
方法用于定义该类或该类实例的行为特征和功能实现,是类和对象行为特征的抽象,很类似于面向过程中的函数。方法是从属于类和对象的。
方法的定义格式:
[修饰符] 方法返回值类型 方法名(形参列表) {
// n条语句
}
3、面向对象的内存分析:
栈:
- 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)
- JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)
- 栈属于线程私有,不能实现线程间的共享!
- 栈的存储特性是“先进后出,后进先出”
- 栈是由系统自动分配,速度快!栈是一个连续的内存空间!
堆:
-
堆用于存储创建好的对象和数组(数组也是对象)
-
JVM只有一个堆,被所有线程共享
-
堆是一个不连续的内存空间,分配灵活,速度慢!
“JAVA只有一个方法区”
4、构造方法:
- 通过new关键字调用!!
- 构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用return返回某个值。
- 如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加!
- 构造器的方法名必须和类名一致!
5、static关键字:
static修饰的成员变量和方法,从属于类。
普通变量和方法从属于对象的
6、 Java方法中所有参数都是“值传递”,也就是“传递的是值的副本”。也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件改变不会影响原件。
7、通过package实现对类的管理;如果我们要使用其他包的类,需要使用import导入,从而可以在本类中直接通过类名来调用。