美文网首页
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核心技术卷 I》之 Java对象与类

    Java对象与类 面向对象程序设计 面向对象程序设计,简称OOP,Java语言就是完全面向对象的。 类 类(cla...

  • Android_开发_Day8_类和对象

    Android_开发Day8类和对象 目的: 了解Java的类和对象,学会Java类和对象的新建与使用。 技术: ...

  • 标签墙

    java入门程序 超级容易理解!!!Java的面向对象思想———类与对象。

  • 3. Java面向对象编程

    类与对象[1] Java是面向对象的汇编语言(面向机器)—— c语言(面向过程)—— java语言(面向对象) 类...

  • Java面向对象最新面试题(含答案)-如果你能够撑握保证找到一份

    Java 面向对象 1. super()与 this()的区别? This():当前类的对象,super 父类对象...

  • java基础(第零篇)对象与类

    前言: 本文讲述java中对象与类的一些概念。包括对象与类的有关概念,类间五种关系,类的访问权限等。 在java中...

  • Java对象与类

    对象:对象是类的一个实例,有状态与行为。 类:是一个模版,它描述一类对象的行为和状态。 例如:狗狗是一个类,那么每...

  • Java 类与对象

    在Java中,面向对象可以说是最最核心的部分。最近看了一下 Thinking in Java 深有体会,先在此分享...

  • java类与对象

    堆空间:保存真正的数据,保存对象的属性栈空间:保存堆内存的地址,堆内存操作权,简单来说就是对象名称nullpoin...

  • Java类与对象

    面向对象的特性类构造方法与对象的创建参数传递对象的组合实例成员与类成员方法重载、覆盖与多态this、包、impor...

网友评论

      本文标题:Java类与对象

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