一、对象
1.对象的概念:
对象并不只是存在于java的,它只是一种概念,在生活中,只要是一个具体的物体或者一件具体的事情就是一个对象。例如:某个人、某一辆车、某台电脑,这都是一个对象。
这里需要注意的是对象一定要是一个具体的事物,而例如人、车,这种没有具体的指代,就不能算一个对象。
2.对象的描述:
如何描述一个对象?我们需要从两方面进行描述:特征(属性)和行为(方法)
例如:对于某一台电脑这个对象:1.特征:形状,大小,重量,品牌,型号,CPU,内存,显卡,硬盘,...;2.行为:上网,玩游戏,学习,播放电影,...
二、类
1.类的组成:
生活中的类:根据对象相似的特征和相似的行为进行归类。例如:桌子、椅子
程序中的类 :由两个部分组成:1.属性(成员变量) ;2.方法(成员函数)
2.类的基本格式:
public class 类名 { 访问修饰符 数据类型 属性名; 访问修饰符 返回值类型 方法名(数据类型 参数名,...){ //代码 } }
3.实例化对象和调用方法的格式:
实例化对象的格式:
实例化对象的关键字:new
类名 对象名 = new 构造方法(参数值,...);
参数值可以为空
调用方法的格式:
对象名.方法名(参数值,...);
举例1:
现在设置这样一个情景:学生张三(已有20学分)选修了一门Java课程,学完该课程后,学分要加3分。
下面我们先来分析一下:
1.对象:
张三
特征:姓名,学分 行为:学习(Java)
Java课程
特征:学分,课程名,课时 行为:无
2.根据类的格式定义学生和课程类。
3.实例化对象:
Student stu = new Student();
Classes cla = new Classes();
//定义Student类 public class Student { //声明属性 private String name;//姓名属性 private int score;//学分属性 //定义设置课程名属性值的方法 public void setName(String n){ name = n; } //定义获取课程名属性值的方法 public String getName(){ return name; } //定义设置学分属性值的方法 public void setScore(int s){ score = s; } //定义获取学分属性值的方法 public int getScore(){ return score; } //定义学习课程的方法Classes是类名 cla是参数名对象名 public void study(Classes cla){ System.out.println(name+"正在学习"+cla.getName()+"课程!"); //得到课时 int time = cla.getTime(); //减少课时 time--; //将减少后的值设置给课程对象 cla.setTime(time); //判断是否已经学完所有课时 if(cla.getTime() <= 0){ System.out.println(name+"已经学完"+cla.getName()+"课程。"); //让学生的学分加上课程的学分。 score= score+cla.getScore(); } } }
//定义课程类 public class Classes { private String name;//课程名属性 private int score;//学分属性 private int time;//课时属性 //定义设置课程名属性值的方法 public void setName(String n){ name = n; } //定义获取课程名属性值的方法 public String getName(){ return name; } //定义设置学分属性值的方法 public void setScore(int s){ score = s; } //定义获取学分属性值的方法 public int getScore(){ return score; } //定义设置课时属性值的方法 public void setTime(int t){ time = t; } //定义获取课时属性值的方法 public int getTime(){ return time; } }
//定义管理学生学习课程的类 public class Manager { //定义程序的入口主函数 public static void main(String [] args){ //实例化Student类的对象 Student stu = new Student(); //设置对象的姓名属性值 stu.setName("张三"); //设置对象的学分属性值 stu.setScore(20); //实例化Classes类的对象 Classes cla = new Classes(); cla.setName("Java");//设置课程名 cla.setScore(3);//设置学分 cla.setTime(10);//设置课时 for(int i=0;i<10;i++){ //调用学生学习课程的方法 stu.study(cla); } System.out.println(stu.getName()+"现在的学分是"+stu.getScore()); } }
以上程序的执行结果为
张三正在学习java课程! 张三正在学习java课程! 张三正在学习java课程! 张三正在学习java课程! 张三正在学习java课程! 张三正在学习java课程! 张三正在学习java课程! 张三正在学习java课程! 张三正在学习java课程! 张三正在学习java课程! 张三已经学完java课程。 张三现在的学分是23
举例2:
奥特曼和小怪兽进行PK,直到一方的血量为0 时,结束战斗输出谁胜利了。
//定义People类 public class People { //声明属性 private String name;//姓名属性 private int blood;//血量属性 //定义设置People名属性值的方法 public void setName(String n){ name = n; } //定义获取People名属性值的方法 public String getName(){ return name; } //定义设置血量属性值的方法 public void setBlood(int b){ blood = b; } //定义获取血量属性值的方法 public int getBlood(){ return blood; } //定义打小怪兽的方法 public void hit(Monster mon){ System.out.println(name+"对"+mon.getName()+"进行攻击!"); int blood = mon.getBlood();//得到血量 blood-=2;//减少血量 mon.setBlood(blood);//将减少后的血量值设置给怪兽对象 if(mon.getBlood()<=0){ System.out.println(name+"胜利了!"); } } }
//定义monster类 public class Monster{ private String name;// Monster名属性 private int blood;//血量属性 //定义设置Monster名属性值的方法 public void setName(String n){ name = n; } //定义获取Monster名属性值的方法 public String getName(){ return name; } //定义设置血量属性值的方法 public void setBlood(int b){ blood = b; } //定义获取血量属性值的方法 public int getBlood(){ return blood; } //定义打奥特曼的方法 public void hit(People peo){ System.out.println(name+"对"+peo.getName()+"进行攻击!"); int blood = peo.getBlood(); blood--;//减少血量 peo.setBlood(blood);//将减少后的血量值设置给People对象 if(peo.getBlood()<=0){ System.out.println(name+"胜利了!"); } } }
//定义管理类 public class Manager{ //定义程序的入口函数 public static void main(String [] args){ People peo = new People();//实例化People类的对象 peo.setName("奥特曼");//设置对象的姓名属性值 peo.setBlood(10);//设置对象的血量属性值 Monster mon = new Monster();//实例化Monster类的对象 mon.setName("小怪兽");//设置对象的姓名属性值 mon.setBlood(10);//设置对象的血量属性值 while (mon.getBlood()>0 && peo.getBlood()>0) { mon.hit(peo); peo.hit(mon); } System.out.println(mon.getName()+"现在的血量是"+mon.getBlood()); System.out.println(peo.getName()+"现在的血量是"+peo.getBlood()); } }
以上程序的执行结果为:
小怪兽对奥特曼进行攻击! 奥特曼对小怪兽进行攻击! 小怪兽对奥特曼进行攻击! 奥特曼对小怪兽进行攻击! 小怪兽对奥特曼进行攻击! 奥特曼对小怪兽进行攻击! 小怪兽对奥特曼进行攻击! 奥特曼对小怪兽进行攻击! 小怪兽对奥特曼进行攻击! 奥特曼对小怪兽进行攻击! 奥特曼胜利了! 小怪兽现在的血量是0 奥特曼现在的血量是5
三、构造方法
以上程序我们都是用的普通方法,但有时候我们需要用到构造方法
△.构造方法也称为构造函数或构造器。
1.基本格式:
访问修饰符 构造方法名(数据类型 参数名,...){ //代码 }
而上面的普通方法的格式为:
访问修饰符 返回值类型 方法名(数据类型 参数名,...){ //代码 } }
我们可以看出,在格式上,构造方法与普通方法的区别在于其少了返回值类型。
△.注意:构造方法名必须要和类名完全一致。这也是其与普通方法不同的地方。
2.用途:
Java如果要创建一个对象,就必须要使用构造方法,否则对象无法创建。那么为什么前面我们没用到构造方法,也创建了对象呢?这是因为如果你没有自定义构造方法,Java就会给每一个类提供一个默认不带参数的构造方法;而一旦你自己定义了构造方法,则默认的构造方法会被覆盖,无法再继续使用。
构造方法还有一个用途就是传参数,如果之前声明了参数,那么在实例化对象的时候,可以将参数传过来,即:
类名 对象名 = new 构造方法(参数);
这在之后的例子中会演示到。
3.方法重载:
概念:方法重载是指在一个类中定义多个同名的方法。
条件:a.方法名必须要完全一致;b.方法所带的参数个数,参数类型,参数顺序必须要有一个不同。(这是因为主程序在调用方法时,是根据参数的区别来调用的)
使用时机:当一个对象会产生不同参数的方法时使用,
例如:学生的学习方法不止一个,可以自己看书,可以上课等等。即:
public void study(Book bk){ //代码 } public void study(Course cos){ //代码 }
举例:
奥特曼和小怪兽以及Boss进行PK,直到一方的血量为0时,结束战斗谁出谁胜利了。
//定义People类 public class People { private String name; private int blood; public People (String name,int blood){ this.name=name; this.blood=blood; } //定义设置People名属性值的方法 public void setName(String n){ name=n; } //定义获取People名属性值的方法 public String getName(){ return name; } //定义设置血量属性值的方法 public void setBlood(int b){ blood = b; } //定义获取血量属性值的方法 public int getBlood(){ return blood; } //定义打小怪兽的方法 public void hit(Monster mon){ System.out.println(name+"对"+mon.getName()+"进行攻击!"); int blood = mon.getBlood();//得到血量 blood-=2;//减少血量 mon.setBlood(blood);//将减少后的血量值设置给怪兽对象 if(mon.getBlood()<=0){ System.out.println(name+"胜利了!"); } } //定义打boss的方法 public void hit(Boss bs){ System.out.println(name+"对"+bs.getName()+"进行攻击!"); int blood = bs.getBlood();//得到血量 blood-=1;//减少血量 bs.setBlood(blood);//将减少后的血量值设置给怪兽对象 if(bs.getBlood()<=0){ System.out.println(name+"胜利了!"); } } }
//定义Monster类 public class Monster { private String name; private int blood; public Monster (String name,int blood){ this.name=name; this.blood=blood; } //定义设置Monster名属性值的方法 public void setName(String n){ name = n; } //定义获取Monster名属性值的方法 public String getName(){ return name; } //定义设置血量属性值的方法 public void setBlood(int b){ blood = b; } //定义获取血量属性值的方法 public int getBlood(){ return blood; } //定义打奥特曼的方法 public void hit(People peo){ System.out.println(name+"对"+peo.getName()+"进行攻击!"); int blood = peo.getBlood(); blood--;//减少血量 peo.setBlood(blood);//将减少后的血量值设置给People对象 if(peo.getBlood()<=0){ System.out.println(name+"胜利了!"); } } }
//定义boss类 public class Boss { private String name; private int blood; public Boss (String name,int blood){ this.name=name; this.blood=blood; } //定义设置Boss名属性值的方法 public void setName(String n){ name = n; } //定义获取Monster名属性值的方法 public String getName(){ return name; } //定义设置血量属性值的方法 public void setBlood(int b){ blood = b; } //定义获取血量属性值的方法 public int getBlood(){ return blood; } //定义打奥特曼的方法 public void hit(People peo){ System.out.println(name+"对"+peo.getName()+"进行攻击!"); int blood = peo.getBlood(); blood--;//减少血量 peo.setBlood(blood);//将减少后的血量值设置给People对象 if(peo.getBlood()<=0){ System.out.println(name+"胜利了!"); } } }
//定义管理类 public class Manager { public static void main(String[] args) { // TODO Auto-generated method stub People peo=new People("奥特曼",20); Monster mon=new Monster("小怪兽",10); Boss bs=new Boss("大魔王",30); while (mon.getBlood()>0 && peo.getBlood()>0) { mon.hit(peo); if ( peo.getBlood()>0) peo.hit(mon); } while (bs.getBlood()>0 && peo.getBlood()>0){ bs.hit(peo); if ( peo.getBlood()>0) peo.hit(bs); } System.out.println(mon.getName()+"现在的血量是"+mon.getBlood()); System.out.println(peo.getName()+"现在的血量是"+peo.getBlood()); System.out.println(bs.getName()+"现在的血量是"+bs.getBlood()); } }
运行结果为:
小怪兽对奥特曼进行攻击! 奥特曼对小怪兽进行攻击! 小怪兽对奥特曼进行攻击! 奥特曼对小怪兽进行攻击! 小怪兽对奥特曼进行攻击! 奥特曼对小怪兽进行攻击! 小怪兽对奥特曼进行攻击! 奥特曼对小怪兽进行攻击! 小怪兽对奥特曼进行攻击! 奥特曼对小怪兽进行攻击! 奥特曼胜利了! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 奥特曼对大魔王进行攻击! 大魔王对奥特曼进行攻击! 大魔王胜利了! 小怪兽现在的血量是0 奥特曼现在的血量是0 大魔王现在的血量是16
这个例子中我们在People、Monster和Boss类里面都用了带参数的构造方法(两个参数:名字、血量), 在People类里面,对于hit方法用到了方法的重载(参数类型不同)。
△.给参数赋值的时候,用到了this.name=name和this.blood=blood,因为当参数名和属性名一致时,根据Java的规则,会优先使用最近的参数,这样参数赋给参数就和属性没有关系。所以这里用this.属性名,来表示这个是一个属性。这是this的一个用法,关于this的其他用法这里就不具体介绍了。
相关推荐
Java基础知识:类和对象 Java 编程语言中,类和对象是核心概念。理解类和对象的概念对于掌握 Java 编程至关重要。本文将详细介绍 Java 中类和对象的概念、定义和使用方法,并提供相关示例代码,帮助读者深入了解和...
* Java 语言基础:类的定义、构造方法、成员变量、成员方法 2. 银行账户功能模拟: * 属性:账号、储户姓名、地址、存款余额、最小余额 * 方法:存款、取款、查询 知识点: * 面向对象编程基本概念:类、对象、...
下面是关于JAVA类和对象及数组的习题,涵盖了构造方法、继承、多重继承、变量声明、数组初始化等方面的知识点。 1. 构造方法的调用方式: 构造方法是类的特殊方法,用于初始化对象的状态。调用构造方法的方式有很多...
总之,类和对象是面向对象编程的基础,它们帮助我们将复杂的问题抽象为独立的实体,而构造方法则是创建和初始化这些实体的关键。理解并熟练运用这些概念,将使你的编程能力得到提升,并能更好地设计和实现复杂的系统...
Java面向对象设计类和对象是面向对象程序设计的基础,它将现实世界模型自然延伸到程序设计中。类和对象是面向对象设计的核心概念,类描述对象的属性和行为,对象是类的实例,是一个实实在在的个体。 类是对象的模板...
java基础+面向对象+构造方法实例化
4. 构造方法:构造方法用于对象的初始化,构造方法的名称必须与类名相同,构造方法可以重载,构造方法可以有参数也可以没有参数。 5. 面向对象编程的基本概念:面向对象编程的基本概念包括封装、继承和多态。封装是...
了解和熟练使用构造方法是Java面向对象编程的基础,下面将详细阐述Java构造方法的相关知识点。 一、构造方法的作用 构造方法的主要任务是在创建对象时设置对象的初始状态,为对象成员变量赋值。当一个类被实例化时...
- 显式构造方法:可以通过定义一个或多个构造方法来自定义对象的初始化方式。 ```java public class Student { private int id; // 无参构造方法 public Student() { this.id = 0; // 初始化id } // 带...
- **构造方法**:构造方法是用于初始化新创建对象的特殊方法,通常与类名相同且无返回类型。 - **访问修饰符**:public、private、protected和默认修饰符控制类、方法和变量的可见性,理解它们的区别和使用场景。 ...
在创建一个对象时,Java首先初始化类中的静态成员,然后是实例成员,最后才是构造方法。这意味着如果一个类中有多个成员变量,它们的初始化顺序将按照代码中声明的顺序进行。 #### 八、总结 构造方法是Java编程...
例如,一个简单的`Person`类可能有以下构造方法: ```java public class Person { private String name; private int age; // 默认构造器 public Person() { this.name = "未知"; this.age = 0; } // ...
总的来说,Java中带有不同构造方法的程序内存分析涉及构造方法的选择、内存的分配(包括栈和堆)、对象的初始化以及垃圾回收机制的理解。通过深入研究这些概念,开发者可以更好地控制和优化程序的内存使用,提高程序...
### Java:构造函数与对象 #### 第一章:构造函数揭秘——创造者的第一次触碰 在Java编程语言中,构造函数扮演着极其重要的角色。它是一种特殊的成员方法,主要用于对象的初始化过程。构造函数没有返回类型,其...
【Java基础入门教程 第3章 类和对象】 Java是一种面向对象的编程语言,其核心概念是类和对象。本章主要介绍了面向对象编程的基础知识,包括数据类型、变量、数组、运算符和控制语句,并重点讲解了类和对象的概念。 ...
Java语言程序设计A实验1是关于类与对象的实践学习,旨在深入理解面向对象编程的基本概念和技巧。实验主要包括以下几个核心知识点: 1. **面向对象编程基础**:面向对象编程(OOP)是一种编程范式,它以对象为中心,...
Java程序基础类和对象的关系 Java程序基础类和对象的关系是Java程序设计的核心概念之一。类和对象之间存在着紧密的关系,类是对象的抽象,对象是类的具体化和实例化。 类是对象的抽象 在Java程序设计中,类是一个...
Java面向对象编程练习题 本资源摘要信息涵盖了 Java 面向对象...本资源摘要信息展示了 Java 面向对象编程的基础知识,涵盖了类的成员变量、方法、构造方法等概念,为学习 Java 编程语言的基础知识提供了有价值的参考。
本篇文章详细介绍了Java中的类与对象,包括类的定义规则、对象的创建与使用、类与对象的关系以及构造方法等内容。通过示例代码,帮助读者更好地理解和掌握这些概念。在实际编程中,熟练掌握类与对象的使用是非常重要...