2022-07-18 day09 第一小组 王鸣赫
面向对象
面向过程和面向对象
面向过程:面向过程就是分析出实现需求需要的步骤,通过一些方法一步一步实现。
面向对象(行为化):把整个需求的按照特点、功能划分,将这些存在共性的部分封装成类(类实例化之后才是对象),让对象去解决问题。
定义变量:1、brand,2、color,3、length...
在Java中,面向对象有3大特征:
1、封装
2、继承
3、多态
4、抽象
有返回值的方法在执行后会得到一个具体的值,这个值可以存下来的
属性
创建对象的语法:类名 对象名 = new 类名()
成员方法
- 方法名不能重复
- 自己调自己-递归
- 递归的问题:StackOverflowError 栈溢出 内存溢出
- 开发中到底要不要用递归?如果用的话,要注意什么?
点击查看代码
public class Ch01 {
// 斐波那契数列
/*
我们知道除了0和1,第number个数字
等于第number-1个数和第number-2个数的和
当number = 4;
return fibonacci(3) + fibonacci(2);
fibonacci(3) = fibonacci(2) + fibonacci(1)
fibonacci(2) = fibonacci(1) + fibonacci(0)
*/
public int fibonacci(int number){
if(number == 0 || number == 1){
return number;
}else {
return fibonacci(number - 1) + fibonacci(number - 2);
}
// int result = 0;
// for (int i = 0; i < number; i++) {
//
// result = (number - 1) + (number - 2);
// }
}
public int factorial(int number) {
// 5! = 5 * 4 * 3 * 2 * 1
// 循环的做法
// int result = 1;
// for (int i = 1; i <= number ; i++) {
// result *= i;
// }
if(number <= 1){
return 1;
}
return number * factorial(number - 1);
}
public void run(){
run();
System.out.println("汽车启动啦!");
}
// main方法 主方法
/*
如果一个方法有static
要调用一个非static的方法
就只能创建对象,使用对象.方法的形式调用
*/
public static void main(String[] args) {
Ch01 c = new Ch01();
// c.run();
// int i = c.fibonacci(3);
int i = c.factorial(5);
System.out.println(i);
}
}
重载
方法名相同
参数不同(参数的类型,参数的个数,参数的顺序)
发生在同一个类里
与返回值类型无关,与访问权限修饰符无关,与方法体无关
方法的重载的好处:
为了把功能相似相同的方法用同一个名字
求最大值
点击查看代码
public class Ch03 {
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) {
Ch03 c = new Ch03();
c.max(1,2,3);
}
}
不定长参数
1.参数列表中,至多有一个不定长参数
2.不定长参数必须在最后位置
访问权限:
public:一个工程下任意位置都可以访问
类,属性上,方法上,构造器
protected:可以跨包,如果跨包,必须是他的子类
属性,方法,构造器
(默认的):当前包下可以访问
类,属性,方法,构造器
private:只有当前类可以访问
属性,方法,构造器
构造器(构造方法)
-
语法:
-
访问权限修饰符 类名(参数列表){
-
特点:
-
1.java在new对象的时候,先看对象所对应的类有没有构造器,有什么样的构造器。
-
如果没有构造器,则无法创建对象
-
2.每个类会有一个默认的无参的构造器
-
3.在对象被实例化时,调用了构造器
-
4.我们创建对象实际上是通过构造器创建的
-
5.如果一个类中显式的声明了一个构造器,原来默认自带的无参构造器就失效
感受
今日知识十分抽象,构造器部分没有思路

浙公网安备 33010602011771号