2022-7-18 第三小组 甘源册 学习笔记

知识点掌握情况

面向对象概念(了解) 方法的创建(理解) 方法的重载(理解) 不定长参数(理解)构造器(了解)

学习心情(心路历程)

今天讲的构造器,听着不是很懂,不太明白带着有参构造器的作用,不是很理解。希望老师能指导一下

1.Java面向对象

万事万物皆对象

1.1面向过程

面向过程就是分析得出,实现需求需要的步骤,通过一些方法,一步一步实现

  • 例子

    • 我去饭店吃蛋炒饭

      • 面向过程完成就是,我到了饭店,和老板说要吃蛋炒饭,老板瞥了我一眼,道:“厨房在那边,自己去做。”说完老板抬了抬手,指了一个方向。我无奈地点点头,向厨房走去。进入厨房我发现厨房中空无一物,我的无奈更深了,看来所有的东西都需要我自己准备了。于是我 打算先准备好食材。没有鸡蛋怎么办?很简单,只要有一只鸡就可以了,它生下了蛋我就有鸡蛋了,于是我需要找到一只鸡。没有鸡怎么办呢?也很简单,有个鸡蛋就可以,只要孵出小鸡就有鸡生蛋了。但是没有鸡蛋,于是鸡生蛋,蛋生鸡的问题就开始了。。。

      • 这是一种夸张的说,事实上面向过程的开发也是有基础建设存在的。

1.2面向对象(行为化)

把整个需求的特点或者是功能划分这些需求,将这些存在共性的部分,把他封装成类,(类实例化之后才是对象),让对象去解决问题。

  • 例子

    • 我去饭店吃蛋炒饭
      • 到了饭店,告诉老板我要吃蛋炒饭,老板去做蛋炒饭,做完之后端上来,我支付宝付账之后,开吃。我需要掌握的技能是:吃饭、付账、说话和走路
      • 对比面向过程,我不需要掌握过多的技能,不需要对我要完成的这件事的每一个步骤都了如指掌,不需要去做每一个步骤。例如做蛋炒饭的这件事就交给了厨师去完成,具体过程和方法我不需要关注,这样专业的人做专业的事,可以节省很大的开发时间。面向对象思想让每个开发者只需要关注自己开发的内容即可,降低了沟通成本、学习成本、开发成本等,大大提高效率
  • 高级的编程语言,会向着人的思维靠近

  • 三大特征(四大特征):封装,继承,多态,(抽象)

  • 封装

    • 代码层面
    • 思想层面
  • 如果把变量直接声明在类里,加——成员变量(全局变量)

  • 如果把变量声明在某个方法里:局部变量

1.3重点

  • 我们能够遇见的所有的类都是引用数据类型
  • 引用数据类型的初始值都是null
  • 只要看见了new ,就不是null。他就有地址。
  • 赋值时,除了String,其余的引用数据类型都需要new,不new就没有地址
  • Java中的传参需要明确数据类型,(顺序要对上)
  • java.lang(language)包下的所有的类不需要显示的导入

1.4class

class:用来创建一个类或创建一个数据类型

  • 类名 对象名=new 构造器

1.5内存空间

1.5.1栈

栈内存储:变量,基本数据类型

1.5.2堆

创建对象的时候,堆内存保存的是它的地址。

1.6方法(重点)

  • 方法的结构

    • public 访问权限修饰符
    • void 没有返回值(Boolean ,返回布尔型 int 返回整数型)
      • 有返回值用return;
    • run() 方法名:标识符
    • {} 方法体--这个方法要干什么
    • () 传参数
  • return

    • return 关键字终止方法的继续执行
    • 在方法里给他返回值
  • 访问权限修饰符:

    • 访问权限修饰符 类内部 同一个包下 子类 任何地方 可以修饰
      private (私有的) Yes 属性,方法,构造器
      default(默认的,友好的) Yes Yes 属性,方法,类,构造器
      protected(受保护的) Yes Yes Yes 属性,方法,构造器
      public(公有的) Yes Yes Yes Yes 类,属性,方法,构造器
    • public:最大的,只要是public声明的方法在同一个项目里都可以用

    • private:最小,只有在本类里可以用

    • protected: 可以跨包,如果跨包必须是它的子类

    • default: 当前包下可以访问,如果跨包需要导入它所在的包

  • 如果一个方法有static要调用没有static的方法,就只能创建对象,适使用对象方法的形式调用

  • 标识符的命名规则:字母,数字,下划线,美元符号,数字不能开头

    • 类名:大驼峰
    • 属性名,方法名:小驼峰
  • 在声明方法时,括号里的参数是形式参数,形参,可以当局部变量使用

  • 在调用方法时,括号里的参数(传入方法的参数)是实际参数,实参

  • 方法自己调自己——递归。(有可能要出现栈溢出,内存溢出

    • 代码

    • // 斐波那契数列  
          public static int show(int num) {
              if (num==0 || num==1) {
                  return 1;
              }else {
                  return show(num-1)+show(num-2);
              }
          }             //结果:show(5)   8
      // 阶乘
          public static int show(int num) {
              if (num>0) {
                  return show(num-1)*num;
              }else {
                  return 1;
              }
          }               //结果: show(5)   120
      

1.6.1 方法的重载(Overload)

  • 方法名相同

  • 参数不同(参数的类型不同,参数的个数不同,参数的顺序不同)

  • 与返回值的类型无关,与访问权限修饰符无关,与方法体无关

  • 发生在同一个类里

  • 练习代码

    •     // 判断两个数大小
          public static double max(double a,double b){
              return a>b?a:b;
          }
          // 判断三个数大小
          public static double max(double a, double b,double c){
              return max(max(a,b),c);
          }
      

1.6.2不定长参数

  • 参数列表中,只能定义一个不定长参数
  • 不定长参数必须在列表的最后边
  • 不定长参数可以传(0~+∞)个
 	//   add(1,21,31,41,1,31.0);
	public static  double add(double... arr){
        double d=0;
        if (arr.length<2){
            return arr[0];
        }else {
            for (int i = 0; i < arr.length; i++) {
                d+=arr[0];
            }
            return d;
        }
    }

1.6.3构造器

  1. Java在new对象的时候,先看对象所对应的类有没有构造器,有什么样的构造器,如果没有构造器,则无法创建对象。
  2. 每个类会有一个默认的无参构造器
  3. 在对象实例化的过程,调用的构造器
  4. 我们创建对象实际上是通过构造器创建的
  5. 如果一个类中是显示的声明了一个的构造器,原来默认自带的无参构造器就失效

扩展

在Linux中,万事万物皆文件

posted @ 2022-07-18 17:46  (≧∇≦)(≧∇≦)(≧∇≦)  阅读(47)  评论(0)    收藏  举报