面向对象
1. 面向对象
1.1 生活中的面向对象和面向过程
烤羊排:
军力烧烤
1. 组团到军力烧烤
2. 排队
3. 点烤羊排!!!
4. 吃
5. 结账 走人
刘氏烤羊排制作流程
1. 买羊排 宁夏盐滩羊
2. 腌制 洋葱 姜片 孜然粉 盐 自来水 30分钟
3. 冷水焯水 大葱 姜片 筷子可以扎透
4. 预热烤箱 预热上下火210度 5分钟
5,放入羊排 烤制20分钟 最后5分钟 放入洋葱 温度 ==> 190
6. 盐 孜然粉 辣椒
7. 吃
8. 收拾东西
红烧肉
大塘
1. 带上你的对象(可能没有)去大塘
2. 点菜 红烧肉 招牌炒饭 蒜蓉西兰花
3. 吃
4. 结账 走人
刘氏红烧肉制作流程
1. 买五花肉 一斤半
2. 用铁锅烙皮
3. 钢丝球洗肉
4. 2cm一块
5. 焯水 料酒 小葱 姜片
6. 炒糖色
7. 炒制 上色 桂皮 八角 香叶 花椒 姜片
8. 加啤酒,两罐 加老抽 生抽 耗油 葱段
9. 30分钟 小火 小料挑出来 加盐
10. 20分钟 3分钟大火收汁
11. 吃
12. 收拾东西
生活中的
面向对象
找合适的人,做合适的事
面向过程
自力更生,丰衣足食,亲力亲为
1.2 类和对象
类 对象 人类 马云爸爸,麻花藤,乔布斯Jobs,雷布斯,王校长 狗类 王可可,锅碗瓢盆,忠犬八公,哮天犬 猫类 Tom,黑猫警长,虹猫,蓝猫,加菲猫,哆啦A梦 羊类 喜羊羊,美羊羊,懒羊羊,沸羊羊,慢羊羊,暖羊羊 超级英雄 孙悟空,钢铁侠,绿巨人,奇异博士,鹰眼,寡姐
类
是对于一类事物的统称,可以描述当前【事物的属性】和【行为】
对象
独立的,特殊的,唯一的个体
1.3 Java中定义类的格式
class 类名 {
属性描述【成员变量 Field】
行为描述【成员方法 Method】
}
属性描述【成员变量】
是用于描述当前类对应的个体有什么属性,这里没有明确的数据,只是用于告知当前类对
应的个体有哪些数据内容。
class Person {
int id;
String name;
int age;
public void eat ( String food) {
System . out. println ( "中午吃" + food) ;
}
public void sleep ( ) {
System . out. println ( "说出来,你可能不信,是床先动的手" ) ;
}
public void game ( String gameName) {
System . out. println ( "玩" + gameName) ;
}
}
1.4 Java中创建对象的方式[new 对象]
比葫芦画瓢
Scanner sc = new Scanner(System.in);
Scanner
数据类型 Scanner类 Java中的扫描器类
sc
Scanner的变量,Scanner类对象,同时也是引用数据类型变量变量
new
1. 跟系统申请一块内存【堆区】空间
2. 将该空间的所有数据全部清除
Scanner()
Scanner【构造方法 Constructor】
用于和new关键字联用,创建对象,构造方法方法名要求和类名一致
格式:
类名 对象名 = new 构造方法();
类名();
Person p1 = new Person ( ) ;
System . out. println ( p1) ;
1.5 通过类对象操作使用类内的成员变量
比葫芦画瓢
int[] arr = new int[10];
arr.length 获取数组的容量
. ==> 的
格式:
通过类对象操作成员变量
类对象.成员变量名字
p1. id = 1 ;
p1. name = "骚磊" ;
p1. age = 16 ;
System . out. println ( "ID : " + p1. id + " Name : " + p1. name + " Age : " + p1. age) ;
1.6 通过类对象操作使用类内的成员方法
比葫芦画瓢
Scanner sc = new Scanner(System.in);
sc.nextInt();
sc.nextFloat();
通过Scanner类对象sc调用类内的成员方法
格式:
类对象.成员方法();
p1. eat ( "鲱鱼罐头" ) ;
p1. sleep ( ) ;
p1. game ( "狼人杀" ) ;
1.7 类对象内存分析图【重点】
2. 构造方法[没有不行,有了难受]
2.1 编译器自动补齐无参数构造方法演示[了解]
构造方法:
类名(初始化参数);
目前在代码中并没有显式定义无参数构造方法,但是代码的确可以使用一个无参数构造方法,哪里来的???
通过反编译工具来看代码
javap -c -l -private Person.class
Java代码中如果没有显式自定义构造方法,Java编译器会在编译代码的过程中,自动完成一个无参数构造方法,供程序员使用。
2.2 构造方法格式和功能介绍
格式:
public 类名(初始化参数) {
初始化语句;
}
初始化参数
大多数情况下是和需要进行创建对象过程中赋值初始化的成员变量有关。
初始化语句
就是针对当前类内的成员变量,进行一个赋值操作
2.3 构造方法和成员方法区别
1. 功能
构造方法用于初始化成员变量,或者其他初始化操作。
成员方法只做功能性实现。
2. 格式区别
构造方法没有返回值类型声明,并且构造方法有且只能是类名。
成员方法必须有返回值类型声明,强制要求成员方法不得使用类名。
3. 使用要求
构造方法无论什么情况下,必须提供一个无参数构造方法备用。
成员方法根据实际需求来完成对应的成员方法。
3. 面向对象学习要求
1. 代码一定足够多,格式一定标准,注释一行不能少
2. 你需要掌握
a. 如何定义一个类
b. 如何创建一个类的对象
c. 如何通过类对象调用成员方法,成员变量
d. 学会代码中需要什么,就给什么
例如:
一个代码需要的数据类型是Person类型,你就给他Person类对象
一个代码需要的数据类型是Student类型,你就给他Student类对象
【数据类型一致化要求】
4. 作业
十二生肖
1. 一个类对应一个文件
2. 一个类内最少3个或者3个以上成员变量,并且12生肖成员变量不得重复
3. 一个类内最少3个或者3个以上构造方法,强制要求必须有一个无参数构造方法
4. 一个类内最少3个或者3个以上成员方法,强制要求最少一个方法带参数,一个方法带返回值。
5. 需要使用所有的构造方法,创建对象,并且调用成员变量,成员方法,运行编译通过。
class Cat {
String name;
String color;
int age;
public Cat ( ) { }
public Cat ( String n) {
name = n;
}
public Cat ( String n, String c, int a) {
name = n;
color = c;
age = a;
}
public void sleep ( ) {
System . out. println ( "据统计,猫每天睡18个小时" ) ;
}
public int getAge ( ) {
return age;
}
public void eat ( String food) {
System . out. println ( "吃" + food) ;
}
}
class Demo3 {
public static void main ( String [ ] args) {
Cat cat = new Cat ( ) ;
cat. name = "Tom" ;
cat. color = "蓝色" ;
cat. age = 30 ;
System . out. println ( "Name: " + cat. name + " Color:" + cat. color + " Age:" + cat. age) ;
cat. sleep ( ) ;
int age = cat. getAge ( ) ;
System . out. println ( "Cat.age : " + age) ;
cat. eat ( "生肉" ) ;
}
}