-
代码格式很简单,甚至于不用你写!!!
// 定义一个类,我们需要考虑的内容没有那么多,大部分的功能都可以利用IDE工具完成。
package com.qfedu.object;public class Student {
private int id;
private String name;
private int age;
private String className;public Student() { } public Student(int id, String name, int age, String className) { this.id = id; this.name = name; this.age = age; this.className = className; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", className='" + className + '\'' + '}'; }
}
-
生活中的面向对象
大早上想喝粥
买
早上去谷婆婆
找一个座位
找服务员点菜
等服务员上菜
吃自己做
买米,小米,大米,绿豆
淘米
加水
煮粥 2:30小时
喝粥
洗锅,刷碗喝咖啡
买
找一下星巴克
柜台排队
选择自己喜欢喝的饮品 CC
付钱
等待
品尝
28-45S自己做
清理所有的器皿
选咖啡豆 苏门答腊黄金曼特宁 苦,不酸
称重 15G
磨豆子 中度研磨
水称重 160ML - 180ML
烧水
导入咖啡粉 煮1分钟
用热水烫一下杯子
过滤
导入牛奶
品尝
清理所有的器皿 25分钟从生活角度来看面向对象和面向过程:
面向对象:
找合适的人,做合适的事
面向过程:
亲力亲为,自力更生。 -
类和对象
类 对象
人 马云爸爸,王校长,麻花藤,沈腾,Jobs
狗类 王可可,忠犬八公,王子,牛牛
手机类 骚磊的iPhone7P,晓磊的mi2
车类 骚磊的电动车,大骚磊的Audi A4L 45TFSI类:
是对一类事物的统称,带有事物的属性描述和行为描述
对象:
是一个独立的,具体的,唯一的,特殊的个体 -
Java中定义类的格式
/*
在Java中定义类的格式:
public class 类名 {
对于当前类的属性描述
对于当前类的行为描述
}-
使用变量来描述属性!!!
成员变量!!! Field
*/
public class Person {
// 姓名描述 使用的数据类型是String类型,字符串
String name;// 年龄描述,使用的数据类型是int类型
int age;// 性别描述. true表示男 false表示女
boolean gender;
}
/*
成员变量是对于当前类所有对象的属性描述,每一个对象中的属性是不尽相同,一般情况下不会初始化!!!
*//*
2. 成员方法是用来描述行为!!!
*/
public class Person {
// 姓名描述 使用的数据类型是String类型,字符串
String name;// 年龄描述,使用的数据类型是int类型 int age; // 性别描述. true表示男 false表示女 boolean gender; // 成员方法 对于吃饭行为的描述 public void eat() { System.out.println("烤羊排!!!"); } // 成员方法,对于睡觉行为的描述 public void sleep() { System.out.println("中午不睡,下午崩溃!!!"); } // 成员方法,对于写代码的行为描述 public void coding() { System.out.println("只要敲不死,就往死里敲!!!"); }
}
-
-
Java中创建类对象的格式
new 关键字:
new关键字是要求JVM在内存的堆区申请一块内存空间。空间的大小受到数据类型约束。Java创建对象的格式:
类名 类对象 = new 类名(可能用到的初始化参数);public class Demo1 {
public static void main(String[] args) {
// 类名 类对象 = new 类名(可能用到的初始化参数);
// 这里创建了一个 Person类对象,对象名叫做 perosn
Person person = new Person();/* int[] arr = new int[10]; arr.length 获取数组的容量 . 这是一个运算符,中文 的 参考数组的操作,我们在使用类对象的成员变量时可以通过 . 运算符来操作 */ /* 借助于 Person类对象 person 对当前类对象中的成员变量进行赋值操作 */ person.name = "骚磊"; person.age = 16; person.gender = true; /* 借助于 Perosn类对象 perosn 获取当前类对象中保存的成员变量数据 */ System.out.println(person.name); System.out.println(person.age); System.out.println(person.gender); /* Scanner sc = new Scanner(System.in); sc.nextInt(); 调用Scanner扫描器对象 sc 中的 nextInt() 方法 */ /* 借助于 Person 类对象 perosn 通过 . 运算符调用类内的成员方法 */ person.eat(); person.sleep(); person.coding(); }
}
-
类对象内存分析
-
构造方法【行为习惯】Constructor
构造方法是用来初始化当前类的类对象的!!!
问题1:
上午的代码中,使用了Person的类的无参构造方法,但是该方法并没有在Person类代码中显式定义!!!
为什么可以使用???
反编译工具:
javap -c -l -private XXX.class
在Java代码中,并没有显式定义使用类名的构造方法,但是Java编译器(javac.exe) 在代码编译阶段给我们程序员提供了一个无参的构造方法,用于初始化当前类对象的成员变量,同时可以和 new 关键字一起使用,创建类对象。
问题2:
构造方法的格式:
public 类名(初始化参数) {
初始化语句;
}
问题3:
当代码中定义了其他的构造方法,但是没有定义无参构造方法,那么该无参构造方法不能再使用!!!
要求:
无论什么时候一定要留有一个无参构造方法备用!!!
注意事项:
1. 构造方法的名字一定是类名,而且其他成员方法不能使用类名作为方法名
2. 构造方法没有返回值,并且不需要使用void填充位置
3. 构造方法可以有多个,但是要求方法中参数类型不能完成一致。
- 构造代码块 【考点】
初始化当前类的所有类对象,只要调用当前类的构造方法,就一定会执行构造代码块中的内容
格式:
{
构造代码块
}
位置:
成员变量之后
构造方法之前
有两个兄弟
静态代码块:
开发常用
局部代码块:
现在基本不用了