〔005〕Java 基础之面向对象

2024-02-26 1730阅读

温馨提示:这篇文章已超过437天没有更新,请注意相关的内容是否还可用!

✨ 目录

    • ▷ 面向对象
    • ▷ 注意事项
    • ▷ this关键字
    • ▷ 构造器
    • ▷ 重载构造方法
    • ▷ 实体类
    • ▷ 案例:英雄搜索

      ▷ 面向对象

      • 对象: 是一种特殊的数据结构
      • 对象: 使用类 new 出来的,有了类就可以创建对象,例 Random r = new Random(),其中 r 就是一个对象
      • 格式: public class 类名 { 变量和一些类方法 }
      • 面向对象编程,更加符合人类的思维习惯,编程也会更直观
      • 其实万物皆对象,如果想操作学生数据,就去找学生对象;如果想操作随机数,就去找随机数对象,例 r.nextInt()
      • 每种对象可以实现不同功能,这样就显得代码会更加的清晰和直观
      • 比如在游戏中,生成 npc 需要用 npc 对象去处理;生成武器,就去用武器的对象去处理
        // 新建类,Npc.java
        package tiny.geeker;
        public class Npc {
            String name; // 生成npc的名字
            double blood; // 给npc加血量
            public void printName() {
                System.out.println("创建的NPC是:" + name);
            }
            public void printBlood() {
                System.out.println("创建的NPC是:" + name + ",它的血量为:" + blood);
            }
        }
        // 调用类
        package tiny.geeker;
        public class Test {
            public static void main(String[] args) {
                Npc npc = new Npc();
                npc.name = "德玛西亚";
                npc.blood = 999999;
                npc.printName();
                npc.printBlood();
            }
        }
        

        〔005〕Java 基础之面向对象

        ▷ 注意事项

        • 第一: 类名建议使用英文且首字母大写,满足驼峰模式且要有意义,这样别人一眼就知道这个类大概的作用是什么,比如上面的 Npc
        • 第二: 类中定义的变量称为成员变量或者叫对象的属性,比如上面的 name 和 blood;类中定义的方法称为成员方法也叫对象的行为,比如上面的 printName 和 printBlood
        • 第三: 一个类文件中,可以写多个class类,但是只能用一个 public 修饰
        • 第四: 类成员变量本身存在默认值,一般不需要赋初始值
        • 第五: 对象和对象之间的数据不会影响,但是多个变量指向同一个对象时就会相会影响
        • 第六: 如果某个对象没有一个变量引用它,那么该对象就会成为垃圾对象
          package tiny.geeker;
          public class Test {
              public static void main(String[] args) {
                  Npc npc = new Npc();
                  // 类成员变量本身存在默认值,一般不需要赋初始值
                  System.out.println(npc.name);
                  System.out.println(npc.blood);
                  // 对象和对象之间的数据不会影响
                  Npc npc1 = new Npc();
                  npc1.name = "德玛西亚";
                  npc1.printName();
                  Npc npc2 = new Npc();
                  npc2.name = "飞兔小哥";
                  npc2.printName();
                  // 多个变量指向同一个对象时就会相会影响
                  Npc npc3 = new Npc();
                  Npc npc4 = npc3;
                  npc3.name = "德玛西亚";
                  npc3.printName();
                  npc4.name = "飞兔小哥";
                  npc3.printName();
                  // 如果某个对象没有一个变量引用它,那么该对象就会成为垃圾对象
                  Npc npc5 = new Npc();
                  npc5 = null;
                  npc5.printBlood();
              }
          }
          

          〔005〕Java 基础之面向对象

          ▷ this关键字

          • this: 其实是一个变量,在方法中指向当前的对象
          • 可以看到在类中打印的 this 和在调用时打印的类名,都指向了同一个地址,所以可以知道 this 就是指向了类的本身
          • 因此在类中,可以通过 this 给类中的变量赋值以及调用类本身中的方法

            〔005〕Java 基础之面向对象

            〔005〕Java 基础之面向对象

            ▷ 构造器

            • 构造器: 当使用 new 实例化一个类时,构造器就会被调用,经常可以给类做一些初始化的操作
            • 构造器: 分为 无参构造器 和 有参构造器
            • 格式: public class Npc { public Npc() { ... } } 构造方法其实是一个跟类同名的方法,且没有返回值类型
              package tiny.geeker;
              public class Npc {
                  public Npc() {
                      System.out.println("我是构造方法");
                  }
              }
              

              〔005〕Java 基础之面向对象

              ▷ 重载构造方法

              • 在前面方法的重载中,知道当方法名字一样,参数不一样的时候就叫方法的重载,那么构造器的重载也是同样的,但是也叫 有参构造器

                〔005〕Java 基础之面向对象

                ▷ 实体类

                • 这是一个特殊的类,仅仅知识用来保存数据,可以用它来创建对象,保存某个事物的数据
                • 成员的变量必须私有,使用 private,不对外暴露变量,而是通过 get、set方法去操作变量,并且必须有 无参数构造器
                • 实体类主要是为了让数据和数据的业务处理相互分离
                  package tiny.geeker;
                  public class Npc {
                      private String name;
                      private double blood;
                      public Npc() {
                      }
                      public Npc(String name, double blood) {
                          this.name = name;
                          this.blood = blood;
                      }
                      public String getName() {
                          return name;
                      }
                      public void setName(String name) {
                          this.name = name;
                      }
                      public double getBlood() {
                          return blood;
                      }
                      public void setBlood(double blood) {
                          this.blood = blood;
                      }
                  }
                  

                  〔005〕Java 基础之面向对象

                  ▷ 案例:英雄搜索

                  • 现在我们创建 Hero 类,并且设置多个英雄,并且可以通过英雄的id进行检索
                  • 需要定义创建英雄的 Hero 类和操作 Hero 的类,创建类负责保存英雄的数据,操作类负责进行英雄检索
                    package tiny.geeker;
                    public class HeroAction {
                        private Hero[] heros;
                        public HeroAction(Hero[] heros) {
                            this.heros = heros;
                        }
                        public void printAllHeros() {
                            System.out.println("-----所有的英雄信息如下-----");
                            for (int i = 0; i  
                    

                    〔005〕Java 基础之面向对象

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]