〔005〕Java 基础之面向对象

这篇具有很好参考价值的文章主要介绍了〔005〕Java 基础之面向对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

▷ 面向对象

  • 对象: 是一种特殊的数据结构
  • 对象: 使用类 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 基础之面向对象,《全套 Java 基础教程》,java,开发语言,经验分享,极限编程,重载,面向对象

▷ 注意事项

  • 第一: 类名建议使用英文且首字母大写,满足驼峰模式且要有意义,这样别人一眼就知道这个类大概的作用是什么,比如上面的 Npc
  • 第二: 类中定义的变量称为成员变量或者叫对象的属性,比如上面的 nameblood;类中定义的方法称为成员方法也叫对象的行为,比如上面的 printNameprintBlood
  • 第三: 一个类文件中,可以写多个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 基础之面向对象,《全套 Java 基础教程》,java,开发语言,经验分享,极限编程,重载,面向对象

▷ this关键字

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

〔005〕Java 基础之面向对象,《全套 Java 基础教程》,java,开发语言,经验分享,极限编程,重载,面向对象
〔005〕Java 基础之面向对象,《全套 Java 基础教程》,java,开发语言,经验分享,极限编程,重载,面向对象

▷ 构造器

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

public class Npc {
    public Npc() {
        System.out.println("我是构造方法");
    }
}

〔005〕Java 基础之面向对象,《全套 Java 基础教程》,java,开发语言,经验分享,极限编程,重载,面向对象

▷ 重载构造方法

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

〔005〕Java 基础之面向对象,《全套 Java 基础教程》,java,开发语言,经验分享,极限编程,重载,面向对象

▷ 实体类

  • 这是一个特殊的类,仅仅知识用来保存数据,可以用它来创建对象,保存某个事物的数据
  • 成员的变量必须私有,使用 private,不对外暴露变量,而是通过 getset方法去操作变量,并且必须有 无参数构造器
  • 实体类主要是为了让数据和数据的业务处理相互分离
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 基础之面向对象,《全套 Java 基础教程》,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 < this.heros.length; i++) {
            Hero h = heros[i];
            System.out.println("id:" + h.getId() + " 名称:" + h.getName() + " 血量:" + h.getBlood());
        }
    }

    public void getHeroById(int id) {
        System.out.println("-----检索的英雄信息如下-----");
        for (int i = 0; i < this.heros.length; i++) {
            Hero h = heros[i];
            if(h.getId() == id) {
                System.out.println("id:" + h.getId() + " 名称:" + h.getName() + " 血量:" + h.getBlood());
                return;
            }
        }
        System.out.println("没有该英雄信息");
    }
}

〔005〕Java 基础之面向对象,《全套 Java 基础教程》,java,开发语言,经验分享,极限编程,重载,面向对象文章来源地址https://www.toymoban.com/news/detail-755776.html

到了这里,关于〔005〕Java 基础之面向对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 🔥🔥Java开发者的Python快速进修指南:面向对象基础

    当我深入学习了面向对象编程之后,我首先感受到的是代码编写的自由度大幅提升。不同于Java中严格的结构和约束,Python在面向对象的实现中展现出更加灵活和自由的特性。它使用了一些独特的,如self和cls,这些不仅增强了代码的可读性,还提供了对类和实例的明确

    2024年02月05日
    浏览(68)
  • 【Java基础教程】(七)面向对象篇 · 第一讲:上干货!面向对象的特性、类与对象、内存结构引用分析、垃圾收集器 GC处理、封装性详解、构造方法、匿名对象、简单 Java 类~

    程序是将数据和逻辑封装在一起的代码段。在Java中,方法是常用的代码段封装方式。然而,在Java中,方法必须存在于一个类中才能使用。因此,我们将进入本章的核心内容——面向对象编程。 利用面向对象设计的程序可以实现代码的重用,并方便开发者进行项目维护。面向

    2024年02月13日
    浏览(44)
  • 【Java基础教程】(八)面向对象篇 · 第二讲:Java 数组全面解析——动态与静态初始化、二维数组、方法参数传递、排序与转置、对象数组、操作API~

    掌握数组的动态及静态创建方式、使用及特征; 掌握引用类型数据的特征; 掌握数组的排序、转置操作; 数组可以将多个变量进行统一的命名,这样相同类型的元素就可以按照一定的顺序进行组合排列 。在 Java中,数组属于引用类型数据,所以在数组的操作过程中,也一定

    2024年02月13日
    浏览(53)
  • 【Java基础教程】(十四)面向对象篇 · 第八讲:多态性详解——向上及向下转型、关键字 final与 instanceof的作用~

    掌握final 的主要作用及使用; 掌握对象多态性的概念以及对象转型的操作; 掌握instanceof 的主要作用及使用; 在Java 中 final称为终结器,在Java 里面可以使用 final定义类、方法和属性,用于表示不可变性 。 final 类:当一个类被声明为 final 时,意味着该类不能被

    2024年02月16日
    浏览(53)
  • 【Java语言面向对象】(1)面向过程编程

    人机猜拳的第一版(下方是程序源码) 人机猜拳(面向过程版本) 三部分组成 初始化 游戏开始 游戏数据统计 逐步完成,并阶段测试。 面向过程整体的思路:做一件事,分为多个步骤,每个步骤之间是有序的,最后按序完成。 面向过程的优缺点: 优点:符合人类思维,简

    2023年04月09日
    浏览(54)
  • 【Java面试题】Java基础——面向对象

    重载和重写的区别★★★ 重载(Overloading)和重写(Overriding)都是Java中面向对象编程的特性,它们都可以让子类继承父类的方法。但是它们之间有一些重要的区别: 定义方式: 重载(Overloading): 在同一个类中 ,可以有 多个方法名相同但参数列表不同的方法 。当调用一个方法时,

    2024年02月11日
    浏览(38)
  • Java基础 --- 面向对象

    面向:拿、找 对象:能干活的东西 面向对象编程:拿东西过来坐对应的事情 类(设计图):是对象共同特征的描述; 对象:是真实存在的具体东西 在Java中,必须先设计类,才能获得对象。 如何定义类 如何得到类的对象 如何使用对象 访问属性:对象名.成员变量 访问行为

    2024年03月17日
    浏览(45)
  • [Java基础]面向对象

           目录 1、对象和类 2、类之间的关系 3、引用 4、对象的创建和使用 5、构造函数/构造方法 6、内存解析        在这篇文章中,我们将学习面向对象的思想,并学习如何使用面向对象思想编程。在学习面向对象编程之前,我们先了解一下编程语言的发展:机器语言,汇

    2024年02月08日
    浏览(42)
  • Java基础练习十(面向对象)

    以下名词中哪些是对象? 猫 狗 Tom Jerry 人 帅哥 美女 迪丽热巴 胡歌 Phone iPhone 14 Pro Max 《Java面向对象》 1. 编写一个Student类,包含name、gender、age、id、score属性,分别为String、String、int、int、double类型。类中声明一个say方法,返回String类型,方法返回信息中包含所有属性值。

    2024年02月12日
    浏览(35)
  • 【java】面向对象的编程基础

    true false 这里输入set和get可以自动将函数补全,传参初始化在构造属性之后 cc ccccc coleak 这里说明先构造属性,再执行代码块,再初始化 静态代码块 4 4 我是静态变量初始化 我是静态代码块 我是成员变量初始化 我是普通代码块 我是构造方法 快速构造,点击生成,构造函数,

    2023年04月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包