面向对象
1. 对象和类的概念
具有状态和行为的实体被称为对象
对象是真实世界中可以运行或有具体功能的,具有状态和行为的实体;对象是类的的成员或实例
类是一组具有共同属性的对象集合,它是定义对象的模板,定义了对象的属性,包括有效的值范围和默认值;类还描述了对象行为。类并不是物理存在的实物,而是一个逻辑实体。
2.类的定义方法
[修饰符] class 类名 [extends 父类名] [implements 接口名]{
// 类体,包括类的成员变量和成员方法
}
在上述语法格式中,class前面的修饰符可以是public,也可以不写(默认);class之后是定义的类名,类名首字母要大写,并且其命名要符合标识符的命名规则;extends和implements是可选项,均为Java中的关键字。
3.面向对象的内存分析
java内存简单分析
堆
1.存放new的对象和数组
2.可以被所有的线程共享,不会存放别的对象的引用
栈
1.存放基本变量类型(会包含这个基本类型的具体参数)
2.引用对象的变量(会存放这个引用在堆里面的具体地址
java参数传递机制
参数传递机制主要有两种:值调⽤,引⽤调⽤
值调⽤:会对实在参数求值(如果是表达式)或拷贝(如果是变量)。这些值被放在属于被调⽤过程的响应形式参数的内存位置上。
引⽤调⽤:实在参数的地址作为相应的形式参数的值被传递给被调⽤者。在被调⽤者的代码中使⽤形式参数时,实现⽅法是沿着这个指针找到调⽤者指明的内存位置。因此,改变形式参数就像改变了实在参数⼀样。C++就是⽤的引⽤调⽤。
4.Java中的构造⽅法
(1)构造⽅法是类的⼀种特殊⽅法,⽤来初始化类的⼀个新的对象,在创建对象(new 运算符)之后⾃动调⽤。 中的每个类都有⼀个默认的构造⽅法,并且可以有⼀个以上的构造⽅法。
构造⽅法必须满⾜的语法规则
1. ⽅法名必须与类名相同。
2. ⽅法没有任何返回类型,包括void。
3. 只能与new关键字结合使⽤。
4. 默认返回类型的是某个类的实例本⾝类型。
5. 不能被static,final,synchronized,abstract和native等关键词修饰。
(2)构造函数重载概念
构造函数重载指的是同一个类里面定义实现了多个不同参数列表的构造函数,虽然这些构造函数的名字都是一样的(和类名一样),但在创建这个类的对象的时候,如果传进去的参数不同,调用的构造函数也是不同的。
构造函数的名称必须与类名相同,区分大小写;
构造函数没有返回值,也不能用void修饰;
构造函数可以用任何访问修饰符(public、protected和private)修饰;
构造函数不能用static、final、abstract和synchronized等关键字修饰;
构造函数不能被覆写(override);
构造函数可以被重载(overload),以参数的个数、类型及顺序区分