10 面向对象
10.1 生活中的面向对象
生活中的面向对象和面向过程
面向对象:
找合适的人,做合适的事
面向过程:
亲力亲为,自力更生,所有的过程都是经历
10.2 java中定义类的格式
10.2.1 格式
格式:
class 类名 {
属性描述;
行为描述;
}
类名:
要求符合大驼峰命名法,见名知意
类名这里可以认为是一个数据类型名,自定义数据类型
属性描述:
描述当前类有哪些属性
例如:
人类的身高体重,年龄姓名
行为描述:
描述当前类有哪些行为
例如:
人类的吃饭行为,睡觉行为,打游戏行为
10.2.2 自定义完成Person类
/**
* 自定义Person类,人类
* @author Anonymous
*
*/
class Person {
/* 属性描述 【成员变量 Field】*/
// 姓名属性描述 这里暂时不需要初始化 只是描述当前类有哪些属性
// String是字符串类型,name成员变量
String name;
// 年龄描述
// int是数据类型 age成员变量
int age;
// 性别描述
// char是数据类型 gender成员变量
char gender;
/*
* 行为描述 【成员方法 Method】
* 一下方法目前不需要static 不要问
*/
// 吃饭行为描述
public void eat(String food) {
System.out.println("吃" + food);
}
// 睡醒行为描述
public void sleep() {
System.out.println("月亮不睡你不睡,你是秃头小宝贝");
}
public void game() {
System.out.println("WOT World Of Tank 坦克世界");
}
}
10.2.3 Java 中创建对象的格式
格式:
Scanner扫描器
Scanner sc = new Scanner(System.in);
赋值号左侧:
Scanner:
数据类型名,Scanner类,【类名】。
sc:
sc 可以认为是Scanner类的对象,sc对象名,同时也是一个【引用数据类型变
量】
赋值号右侧:
new:
1. 在内存的【堆区】申请当前对象所需的内存空间
2. 擦除整个内存空间中的所有数据,所有的内存空间中二进制位都是0
Scanner(System.in);
和类名同名的方法
目前 类名();即可
格式:
类名 对象名 = new 类名();
创建Person类对象
/*
* 这里创建一个Person对象
* 格式:
* 类名 对象名 = new 类名();
*
* 这里创建了一个Person类的对象,对象名 per
*/
Person per= new Person();
System.out.println(per);
/*
* com.qfedu.b.Object.Person@15db9742
* com.qfedu.b.Object 完整的包名
* Person 类名
* @ 所在内存位置
* 15db9742 是当前Person类的对象,per所在【堆区】内存空间首地址
*/
使用成员变量
操作类内的成员变量格式:
类对象.成员变量名 可以赋值操作,可以取值操作
使用成员变量方式
/*
* 通过Person类的对象, per操作name成员变量,age成员变量,gender成员变量
* 进行赋值操作
*
* . 的
*/
per.name = "海航中路彭于晏";
per.age = 16;
per.gender = '男';
/*
* 通过Person类的对象 saolei取值成员变量内容
*/
System.out.println("Name:" + per.name);
System.out.println("Age:" + per.age);
System.out.println("Gender:" + per.gender);
使用成员方式
Scanner sc = new Scanner(System.in);
sc.nextInt(); 通过Scanner类的对象 sc调用nextInt();
sc.nextFloat();
sc.nextDouble();
sc.nextLine();
. 的
格式:
类对象.成员方法(所需参数);
/*
* 格式:
* 类对象.成员方法(所需参数);
* . 的
*/
per.eat("鱼丸");
per.sleep();
per.game();
10.3 总结
格式:
a. 自定义类的格式
b. 创建类对象格式
c. 通过类对象调用成员变量的格式
d. 通过类对象调用成员方法的格式