Java面向对象笔记
1.类与对象的关系
1.1类的概念:
类是对具有相同属性的一类事物的统称,类是一个抽象的概念。
1.2对象的概念
对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。
1.3类与对象的关系
具体实例化为对象后,通过对具体的对象调用该类的某一方法或属性,从而实现特定的功能,体现了java中万事万物皆对象, 而类则是创建对象的前提。
例子:
- 类 = 抽象概念的人
- 对象 = 具体的人
2.类与对象的创建
2.1类创建(声明)的格式
类的声明
Class 类名{
成员属性;(特征)
成员方法;(行为)
}
例如:
Class person{
}
2.2属性与方法的声明及调用格式
2.2.1属性声明
①属性声明格式:
数据类型 属性名;
②初始化属性:
属性名 = 初始化值;
③属性声明及初始化:
数据类型 属性名 = 初始化值;
例如:
Class person{
String name;
name = “李明”;
int age = 20;
}
2.2.2属性调用
类名.属性名;
对象名.属性名;
例如:
person.name;
per.age;
2.2.3方法声明
方法声明格式:
权限修饰符 返回数据类型 方法名(形参数据类型 形参名){
方法体;
return 返回值;
}
例如:
Class person{
String name;
name = “李明”;
int age = 20;
void show(){
system.out.println(“姓名为”+name+“,年龄为”+age);
}
Public int getAge(int age){
age = 22;
return age;
}
}
2.2.4方法调用
对象名.方法名(形参);
例如:
Per.show();
per.getAge(20);
2.3类创建的注意事项:
- 类必须编写在java文件中,一个java文件中,可以存在多个class类,但只能有一个pbulic修饰的类。
- java文件的文件名称必须同public修饰的class类名称相同。
- 对于class的权限修饰只可以用public和default(缺省)
2.4对象创建的格式
- 类名 对象名 = new 类名();
- 对象的创建也叫做类的实例化。
- 使用“对象名.对象成员 ”的方式访问对象成员(包括属性和 方法
例如:
public class Zoo{
public static void main(String args[]){
// 创建对象
Animal xb=new Animal();
xb.legs=4;// 访问属性
System.out.println(xb.legs);
xb.eat();// 访问方法
xb.move();// 访问方法
}
}
2.5类的访问机制
- 在一个类中的访问机制: 类中的方法可以直接访问类中的成员变量 。(例外:static方法访问非static,编译不通过 。)
- 在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。
2.6对象的创建和使用:内存解析
- 堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。
- 通常所说的栈(Stack),是指虚拟机栈。虚拟机栈用于存储局部变量等。局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char 、 short 、 int 、 float 、 long 、double)、对象引用(reference类型,它不等同于对象本身,是对象在堆内存的首地址)。 方法执行完,自动释放。
- 方法区(Method Area),用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
3.匿名对象
我们也可以不定义对象的句柄,而直接调用这个对象的方法。这
样的对象叫做匿名对象。
如:new Person().shout();
使用情况:
如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。我们经常将匿名对象作为实参传递给一个方法调用。
4. 类的成员之一:属性(field)
- 语法格式:
符修饰符 数据型 类型 属性名 = 初始化值; - 说明1: 修饰符
常用的权限修饰符有:private、缺省、protected、public
其他修饰符:static、final (暂不考虑) - 说明2 :数据类型
任何基本数据类型(如int、Boolean) 或 任何引用数据类型。 - 说明3 :属性名
属于标识符,符合命名规则和规范即可。
举例:
public class Person{
private int age; // 声明private变量 age
public String name =“Lila”; //声明public变量 name
}
4.1变量 的分类:成员变量与局部变量
- 在方法体外,类体内声明的变量称为成员变量。
- 在方法体内部声明的变量称为局部变量。
成员变量:实例变量(不以static修饰)、类变量(以static修饰)
局部变量:形参(方法、构造器中定义的变量)、方法局部变量(在方法内定义)、代码块局部变量(在代码块内定义)
注意:二者在初始化值方面的异同
同:都有生命周期
异:局部变量除形参外,均需显式初始化。
4.2成员变量(属性)和局部变量的区别
声明的位置
修饰符
初始化值
内存加载位置
成员变量 | 局部变量 |
---|---|
直接声明在类中 | 方法形参或内部、代码块内、构造器内等 |
private、public、static、final等 | 不能用权限修饰符修饰,可以用final修饰 |
有默认初始化值 | 没有默认初始化值,必须显式赋值,方可使用 |
堆空间或静态域内 | 栈空间 |
4.3对象属性的默认初始化赋值
成员变量类型 | 初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0L |
double | 0.0 |
char | /u0000 |
boolean | false |
引用类型 | null |
5.类的成员之二:方法(method)
5.1方法(method 、函数)的含义
- 方法是类或对象行为特征的抽象,用来完成某个功能操作。在某些语言中也称为函数或过程。
- 将功能封装为方法的目的是,可以实现代码重用,简化代码
- Java里的方法不能独立存在,所有的方法必须定义在类里。
例如:
public class Person{
private int age;
public int getAge() { //声明方法getAge()
return age;
}
public void setAge(int i) { //声明方法setAge
age = i; //将参数i的值赋给类的成员变量age
}
}
5.2方法的声明格式
修饰符 返回值类型 方法名(参数类型 参形1,参数类型 形参2, …){
方法体程序代码
return 返回值;
}
修饰符:public, 缺省,private, protected等
返回值类型:
- 没有返回值:void
- 有返回值,声明出返回值的类型。与方法体中“return”返回值”搭配使用。
方法名 :属于标识符,命名时遵循标识符命名规则和规范,“见名知意”。
形参列表:可以包含零个,一个或多个参数。多个参数时,中间用“, ”隔开。
返回值:方法在执行完毕后返还给调用它的程序的数据。
5.3注意点:
- 方法被调用一次,就会执行一次
- 没有具体返回值的情况,返回值类型用关键字void表示,那么方法体中可以不必使用return语句。如果使用,仅用来结束方法。
- 定义方法时,方法的结果应该返回给调用者,交由调用者处理。
- 方法中只能调用方法或属性,不可以在方法内部定义方法。