美文网首页
Java类与对象

Java类与对象

作者: 笔头还没烂 | 来源:发表于2023-03-28 16:08 被阅读0次

    一、相关概念

    1. 什么是类

      • 类是模子,确定对象将会拥有的特征(属性)和行为(方法)

      • 类是对象的类型

    2. 什么是对象;

      • 对象是类的实例化表现

      • 对象是特定类型的数据

    3. 类和对象的关系;

      • 类是抽象的概念,描述了一个模板,它限定了一种类型当中应该拥有什么(属性)和能做什么(方法)。对象是一个实例产生的具体体现,是一个看得见摸得着的具体实例。
    4. 什么是面向对象;

      • 关注对象,从计算机的角度而言可理解为,关注现实生活中存在的事物的各方面的信息,从对象的角度出发,根据事物的特征进行相关的程序设计。
    5. 属性

      • 对象具有的各种静态特征(对象有什么)

      • 类的属性是有默认的初始值的 03类属性的默认初始值.png
    1. 方法

      • 对象具有的各种动态行为(对象能做什么)
    2. 关于面向对象的编程

      • 根据需求创建类 --> 实例化对象 --> 完成具体的程序逻辑

    二、相关编程思想

    1. 单一职责原则

    2. 里氏替换原则

    3. 依赖倒置原则

    4. 开闭原则

    5. 迪米特法则

    6. 接口隔离原则

    7. 组合/聚合复用原则

    三、相关代码演练

    1. 对象实例化

      • 实例化对象的过程可以分为两部分:

        • 声明对象(在内存的栈区进行)

        • 实例化对象(在内存的堆区进行)

    2. 构造方法(构造函数、构造器)

      • 构造方法与类名同名没有返回值

        语法格式:

            public 构造方法名() {
                  //初始化代码
            }
        
      • 只能在对象实例化的时候调用

      • 当没有指定构造方法时,系统会自动添加无参的构造方法

      • 当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法

      • 一个类中可以有多个构造方法

      • 构造方法只能通过 new 关键字来配合使用,或者在构造方法中通过 this关键字 调用同一个类中的其他构造方法,并且这条语句必须放在方法体的第一条。

            /**
             * 宠物猫类
             */
          public class Cat {
                //成员属性:昵称、年龄、体重、品种
                private String name;//昵称
                private int month;//年龄
                private double weight;//体重
                private String species;//品种
                public Cat(){
                System.out.println("我是一个无参的构造方法");
           }
        
            public Cat(String name,int month,double weight,String species) {
                    this();//在构造方法中通过 this关键字 调用同一个类中的其他构造方法,并且这条语句必须放在方法体的第一条。
                    this.name = name;
                    this.month = month;
                    this.weight = weight;
                    this.species = species;
            }
          }
        
    • 当一个类中存在有返回值的与类名相同的方法时,此时该方法只是一个普通方法。可以通过实例对象.方法名() 的形式调用。语法上不会报错,但是不建议这么去写。
          public class Cat {
              //成员属性:昵称、年龄、体重、品种
              private String name;//昵称
              private int month;//年龄
              private double weight;//体重
              private String species;//品种
      
              //不建议
              public void Cat() {
                  System.out.println("我只是一个普通方法");
              }
         }
      

    this 关键字:

    • this 表示当前对象。
    • 使用场景:
      • 调用成员属性,解决成员属性和局部变量同名冲突。
      • 调用同一个类中的其他成员方法。
      /**
       * 宠物猫类
       */
      public class Cat {
          //成员属性:昵称、年龄、体重、品种
          private String name;//昵称
          private int month;//年龄
          private double weight;//体重
          private String species;//品种
      
          public Cat(String name,int month,double weight,String species) {
              this.name = name;
              this.month = month;
              this.weight = weight;
              this.species = species;
          }
          //成员方法:跑动、吃东西
          //跑动
          public void run(){
              eat();//this.eat();也是一样的效果
              System.out.println("小猫会跑");
          }
          //吃东西
          public void eat() {
              System.out.println("小猫吃鱼");
          }
      }
      
    1. 小结:

      • 面向对象

        • 关注现实存在的事物的各方面的信息,从对象的角度出发,根据事物的特征进行程序设计;

        • 对象:用来描述客观事物的一个实体

        • 类:具有相同属性和方法的一组对象的集合

          • 语法:

            • 类的定义
                public class 类名 {
                      //定义属性部分
                      [访问修饰符]数据类型  属性名;
            
                      //定义方法部分
                      [访问修饰符] 返回类型 方法名(参数){
                      }
                }
            
            • 创建并引用对象
            类名 对象名 = new 构造方法();
            对象名.属性
            对象名.方法名()
            
          • 对象的实例化过程可以分为两部分:

            • 声明对象

            • 实例化对象

              如:Cat cat = new Cat();

              • 声明对象 :Cat cat

                • 声明对象实际上是在内存的栈区开辟了一块空间,此时栈空间的数据是为空的。
              • 实例化对象:new Cat()

                • new 关键字实际上是在内存的堆区开辟了一块空间;
            • 声明对象与实例化对象的关联通过赋值符号“=”号来完成。“=”号是将堆区开辟的空间的内存地址传递到栈区的内存空间里。此后,我们就能通过“对象名.”的形式访问对象的成员属性和成员方法了。

        • 构造方法:构造方法是类中一个比较特殊的方法

          • 没有返回值;与类名相同;可以指定参数;

          • 只能在对象实例化的时候配合 new 关键字调用。

          • 一个类可以有多个构造方法——构造方法重载;

          • 当没有指定构造方法时,系统会自动添加无参的构造方法;

          • 当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法。

        • this 关键字

          • 当前对象的默认引用

          • 使用场景:

            • 调用成员属性,解决成员属性和局部变量同名冲突。

            • 调用同一个类中的其他成员方法。

            • 调用重载的构造方法,并且该语句必须放在方法体的第一条。

    相关文章

      网友评论

          本文标题:Java类与对象

          本文链接:https://www.haomeiwen.com/subject/ezfxddtx.html