✨ 目录 ▷ 面向对象▷ 注意事项▷ this关键字▷ 构造器▷ 重载构造方法▷ 实体类▷ 案例:英雄搜索 ▷ 面向对象 对象: 是一种特殊的数据结构对象: 使用类 new 出来的,有了类就可以创建对象,例
对象:
是一种特殊的数据结构对象:
使用类 new 出来的,有了类就可以创建对象,例 Random r = new Random()
,其中 r
就是一个对象public class 类名 { 变量和一些类方法 }
r.nextInt()
npc
需要用 npc
对象去处理;生成武器,就去用武器的对象去处理// 新建类,Npc.javapackage 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(); }}
第一:
类名建议使用英文且首字母大写,满足驼峰模式且要有意义,这样别人一眼就知道这个类大概的作用是什么,比如上面的 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(); }}
this:
其实是一个变量,在方法中指向当前的对象this
和在调用时打印的类名,都指向了同一个地址,所以可以知道 this
就是指向了类的本身this
给类中的变量赋值以及调用类本身中的方法
构造器:
当使用 new
实例化一个类时,构造器就会被调用,经常可以给类做一些初始化的操作构造器:
分为 无参构造器
和 有参构造器
public class Npc { public Npc() { ... } }
构造方法其实是一个跟类同名的方法,且没有返回值类型package tiny.geeker;public class Npc { public Npc() { System.out.println("我是构造方法"); }}
有参构造器
私有
,使用 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; }}
Hero
类,并且设置多个英雄,并且可以通过英雄的id进行检索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("没有该英雄信息"); }}
来源地址:https://blog.csdn.net/weixin_41635750/article/details/134415706
--结束END--
本文标题: 〔005〕Java 基础之面向对象
本文链接: https://lsjlt.com/news/551474.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0