2022-07-18 第八组 刘禹彤 学习笔记
打卡第9天
今天开始学习面向对象


###学习内容:
1.java是一门面向对象的编程语言,在Java中,万事万物皆对象
(Linux中,万事万物皆文件)
2.面向过程和面向对象
- 面向过程:是分析出实现需求需要的步骤,通过一些方法一步一步实现
- 面向过程(行为化): 把整个需求按照特点,功能划分,将这些存在共性的部分封装成类(类实例化之后才是对象),让对象去解决问题
其实,高级的编程语言,会向着人的思考靠近
面向对象更高级的抽象,是对现实世界的映射
String,Scanner我们在使用Scanner时,从来没有考虑过Scanner为什么能键盘输入,这就是别人给我们创建的对象,事实上,我们也能自己给自己创建对象,在开发中,我们会大量的自己创建自己的对象
例子:
我们准备去开一个·4s店,我们需要有车,需要有门店,怎样用代码去描述一辆车
- 描述车的信息:描述信息的叫做属性,属性事实上从代码的角度就是变量
定义很多变量:1.brand 2.color 3.length .....
- 描述好几个车(car1,car2...):要运用面向对象的思想,我们将一个汽车的多个属性尝试进行打包,这个过程实际上就是在封装对象
在java中,面向对象有3大特征:1.封装:造车,画图纸,根据图纸造,这个图纸是在描述车的信
息,对车的信息的封装
2.继承
3.多态
4.抽象
- 创建对象的语法 : 类名 对象名 = new 类名()
- 通过一个类创建多个对象,每个对象都是独立的,每个类只有一个但是这个类可以有很多实例
3. 内存空间
- 所有的类都是数据类型,都是引用数据类型
- class这个关键字,是创建一个类,用来创建一个数据类型
- 像car1,car2...叫引用,他是指向内存中的一块区域,存放他的空间叫做堆
- 两块内存空间:
- 栈:变量,基本数据类型堆
- 引用数据类型的初始值为null,只要有new,都不是null,他就有地址
4.成员方法:(JS里的函数)
- 定义一个成员方法:(例)public void run()public:访问权限修饰符,后面讲
void:没有返回值
run():方法名,标识符
():方法体,这个方法要干什么
():传参数
- 标识符的命名规则:字母,数字,下划线,美元符号,字母不能开头
1.类名:大驼峰
2.属性名。方法名:小驼峰
赋值时,除了string外,其余的引用类型赋值都要有new
- 在声明方法时,括号里的参数,形式参数,形参,可以当作局部变量使用
- 在调用方法时,真正传入方法的参数,实际参数,实参
- 参数可以有多个,中间用,隔开
5.static
如果一个方法有static, 要调用一个非static的方法,就只能创建对象,适用对象,方法的形式调用
6.方法的重载
1.方法名相同
2.参数不同(参数的类型,参数的个数,参数的顺序)
3.与返回值类型无关,与访问权限无关,与方法体无关
4.发生在同一类里
7.访问权限
- public:一个工程下任意位置都可以访问,可以放在类上,属性上,方法上,构造器
- protected:可以跨包,如果跨包,必须是他的子类,可以放在属性上,方法上,构造器
- (默认的):当前包下可以访问,可以放在类上,属性上,方法上,构造器
- private:只有当前类才可以访问,可以放在属性上,方法上,构造器
8.构造器
构造器(构造方法)
- 语法:访问权限修饰符 类名(){}
特点:1.java在new对象的时候,先看对象所对应的类有没有构造器,有什么样的构造器,如果没有构造器,则无法创建对象
2.每个类会有一个默认的无参的构造器
3.在对象被实例化时,调用了构造器
4.我们创建对象实际上是通过构造器创建的
5.如果一个类中显式的声明了一个构造器,原来默认自带的无参构造器失效
9.return
- 返回值用return xxx表示
- return关键字:
1.return关键字终止方法
2.返回方法的返回值
10.不定长参数
- 参数列表中,不定长参数至多有一个
- 不定长参数必须在最后位置
###学习心得
今天学习的内容有些抽象,不太好理解,上课有一些跟不上老师的进度,要利用下课时间补齐,相关的例子还需要多理解一下具体含义,课下还需勤加练习。
###掌握程度:一般
###练习:
package a;
public class Ch08 {
/*写两个重载的方法
* 1.一个方法求两个数的最大值
* 2.一个方法求三个数的最大值*/
public int max(int num1,int num2){
return num1 > num2 ? num1 : num2;
}
public int max(int num1,int num2,int num3){
int a = (num1 > num2 ? num1 : num2);
return a > num3 ? a :num3;
}
public static void main(String[] args) {
Ch08 c = new Ch08();
int i = c.max(1,2);
System.out.println(i);
int j = c.max(1,2,3);
System.out.println(j);
}
}
代码结果;

浙公网安备 33010602011771号