面向对象的概述
面向对象是把构成问题的事物按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决
问题
OOA:面向对象分析
OOD:面向对象设计
OOP:面向对象编程
面向对象的三个特点是:封装,继承,多态
类
类:
是一种抽象的概念,对某一类事物整体的抽象描述,属性描述和行为描述
对象:
类的具体表现,独立,唯一的个体
类 = 属性 + 方法
类是的定义:
[修饰符] class 类名 {
//类体,包括类的成员变量和成员方法
}
要求:
1.修饰符可以是 public,也可以不写(默认)
2.类名首字母要大写,要符合命名规范
3.大括号{}的内容是类体,主要包括属性描述和行为描述
4.属性描述是用来描述当前类的一些特征,也称为【成员变量】 field
5.行为描述是用来描述当前类可以做到一些事情,也称为【成员方法】 Method
类的成员变量属性的格式:
修饰符 数据类型 变量名;
类的成员变量也称作类的属性,用于描述对象的特征。修饰符为可选项,成员变量在没有手动赋值的
情况下,会有默认值的,其中String的默认值是null
Java中定义类的【成员变量】
class Person {
//使用String类描述Person类的姓名属性
String name;
//使用int类型描述Person类的年龄属性
int age;
//使用char类型描述Person类的性别属性
char gender;
}
Java中定义类的【成员方法/实例方法】
//定义eat方法描述Person类"吃饭方法"
public void eat(String food) {
System.out.println("吃" + food);
}
//定义sleep方法描述Person类"睡觉方法"
public void sleep() {
System.out.println("睡觉");
}
对象
创建对象的格式:
类名 对象名/引用 = new 类名();
Person person = new Person();
解读:
"new Person()"在堆内存中创建Person类的一个类对象,"Person person"则是在栈内存中声明
一个Person类型的变量person,中间的等号将Person类对象在内存中的地址赋值给变量person,
这样变量person就持有了对象的引用。Person类型的变量person被存放在栈内存中,它是一个
引用,会指向真正的对象;通过 new Person()创建的对象则放在堆内存中,这才是真正的对象。
可以通过 "引用.属性名" 的方式来访问对象的属性或给属性赋值。
public static void main(String[] args) {
//这里创建一个Person类对象,对象名为person
Person person = new Person();
System.out.println(person);
/*
* com.wang.Person@4926097b
* com.wang 完整的包名
* Person 数据类型,就是哪个类
* @4926097b 当前对象在内存空间的首地址,十六进制
*/
Person person1 = new Person();
System.out.println(person1);
/*
* 又创建一个Person类对象,对象名为person1
* com.wang.Person@762efe5d
* person和person1对象的内存的首地址不一致,所以不是同一个对象
*/
}
Java中使用 "类对象/引用" 调用成员变量
访问实例变量的格式:
引用.实例变量名/成员变量;
. ==> 表示"的"的意思
空指针异常:NullPointerException
如果没有任何引用指向该对象时,"空引用"访问实例相关的数据,访问该对象的相关数据会出现
空指针异常。
//通过"引用."的方式,调用成员变量
//【赋值】
person.name = "小明";
person.age = 18;
person.gender = '男';
//【取值】
System.out.println("Name:" + person.name);
System.out.println("Age:" + person.age);
System.out.println("Gender:" + person.gender);
Java中使用 "类对象/引用" 调用成员方法
访问实例方法的格式:
类对象/引用.方法名(必要的参数);
//通过"引用."的方式,调用类内的成员方法
person.eat("吃牛排");
person.sleep();
创建对象所对应的JVM内存结构图:
构造方法
构造方法是用来在堆内存中申请一块空间创建对象的,并且可以同时初始化对象中成员变量。当一个类
没有显式的声明构造方法时,系统默认提供一个无参数的构造方法。构造方法的调用就是使用 new
运算符调用的。
自定义使用构造方法
构造方法的语法格式:
public 类名(无/参数列表) {
//在构造方法体中给属性赋值,完成属性的初始化
}
定义构造方法的要求:
1.方法名必须与类名相同
2.在方法名的前面没有返回值类型的声明,void也不能写
3.在方法中不能使用return语句返回一个值
在一个类中除了可以定义无参数的构造方法外,还可以定义有参数的构造方法,通过有参数的构造方法
就可以实现对属性的赋值。在类中,程序会隐式的声明一个默认的无参构造方法,但是,若我们定义有
参构造,那么无参构造就会被覆盖,必须要再显式的声明一个无参构造方法。
与普通方法一样,构造方法也可以【重载】。在一个类中可以定义多个构造方法,只要每个构造方法的
参数类型或参数个数不同即可。在创建对象时,可以通过调用不同的构造方法,来为不同的属性进行
赋值。
本文暂时没有评论,来添加一个吧(●'◡'●)