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.如果一个类中显式的声明了一个构造器,原来默认自带的无参构造器就失效

感受
今日知识十分抽象,构造器部分没有思路

posted @ 2022-07-18 21:11  404notfond  阅读(15)  评论(0)    收藏  举报