1. 类和对象的定义
对象是指一个具体的事物或物体,对象可以从它的特征和用途来描述
。
而类是有相同或相似属性的全体对象的集合,又由于java中的类是面
向对象的,故这个类必须是能够描述这些对象的相同或相似属性邪恶最一般的
模版,这个模板就是一个class。在在主文件中通过调用构造函数来实现,其模
版的功能。
2. 类的结构(格式)
由于类是面向对象的,而描述对象要从对象的特征和用途两方面考虑
,
1.定义特征的格式为:
private 数据类型 属性名;
2.定义用途的格式为:
public 返回值数据类型 方法名(数据类型 参数名){
//这里填程序
}
调用格式为:
对象名.方法名(参数值);
(注意@:若想用途函数中带两个或两个以上的参数 ,就用“,”分隔
符隔开)
3.构造函数
为使定义的类能在主函数中被调用必须构造一个构造函数,若不创建
构造函数,系统会默认构造函数为无参数构造函数,
其格式为:
public 类名(){}
其调用方式为:
类名 对象名= new 类名();
其他类型的构造函数还有:
public 类名(数据类型 参数){}
(注意:若想带多个参数则同注意@)
在一个类中可以定义多个构造器函数,这种方法叫构造器重载。
在主函数中可以只使用一个构造器,系统会根据主函数的格式选择适
当的构造器;如果类中定义了构造器函数,则主函数中不能使用默认构造器函
数。
4.同样的方法也适用于一般函数的重载,这里不细说。
3. 构造器函数与一般函数的区别:
1.构造方法不能定义返回值数据类型;普通方法必须要定义返回值数
据类型;
2.构造方法的方法名必须和类名完全相同;普通方法的方法名可以任
意定义;
3.构造方法是用来实例化对象的;普通方法方法用来执行对象的行为
。
4.构造方法每调用一次就实例化一个新的对象;普通方法只要对象不
变,调用的还是同一个方法。
4.this关键字
当参数名和属性名相同的时候,使用this来区分,加了this的表示属
性,没有加的则是参数。
哪一个对象在调用方法,那么方法中的this关键字就表示该对象。
5.值传递和引用传递
值传递:值传递适用于java所有的基本数据类型和String类型
byte , short int long float double char
boolean.
引用传递:
引用传递适用于java所有的引用类型(类类型,对象类型).
(注意:引用传递传的是地址)
下面是一个关于类与对象的程序:
//这是一个boss类
public class Boss{
//声明名字属性
private String name;
//声明血量属性
private int blood;
//定义一个设置名字属性的方法
public void setName(String n){
//将参数n的值赋值给name
name=n;
}
//定义一个设置血量属性的方法
public void setBlood(int n){
//将参数n的值赋值给blood
blood=n;
}
//定义一个返回姓名属性的方法
public String getName(){
return name;
}
//定义一个返回血量属性的方法
public int getBlood(){
return blood;
}
//定义一个剑圣减血行为
public void fight2(Jiansheng js){
js.setBlood(js.getBlood()-250);
System.out.println(name+"打了剑圣250点血,剑圣还
剩"+js.getBlood()+"点血");
}
}
//这是一个人物类
public class Jiansheng{
//声明剑圣的姓名属性
private String name;
//声明剑圣的血量属性
private int blood;
//定义一个设置姓名属性值的方法
public void setName(String n){
//将参数n的值赋值给name
name=n;
}
//定义一个设置血量属性的方法
public void setBlood(int n){
//将参数n的值赋值给blood
blood=n;
}
//定义一个返回姓名属性值的方法
public String getName(){
return name;
}
//定义一个返回血量属性值的方法
public int getBlood(){
return blood;
}
//定义一个减血行为
public void fight1(Boss bs){
bs.setBlood(bs.getBlood()-2500);
System.out.print(name+"打了boss2500点血,boss还
剩"+bs.getBlood()+"点血");
}
}
//这是主函数
public class Main{
//定义程序入口的主函数
public static void main(String [] args){
//实例化一个剑圣对象
Jiansheng js=new Jiansheng();
//设置js名字
js.setName("剑圣");
//设置js血量
js.setBlood(18000);
//实例化一个boss对象
Boss bs=new Boss();
//设置boss名字
bs.setName("boss");
//设置boss血量
bs.setBlood(180000);
while((bs.getBlood()>0)&&(js.getBlood()>0)){
js.fight1(bs);
if(bs.getBlood()<=0){
System.out.print("剑圣胜利");
break;
}
bs.fight2(js);
if(js.getBlood()<=0){
System.out.print("boss胜利");
break;
}
}
}
}
分享到:
相关推荐
图片对比 只支持bmp 查看每个点是否相同(我是新手,写的不好,请多多指教)
学C++时候留的一个较麻烦的作业,做起来还有点费劲,希望大家多多指教吧
Devexpress学习篇(请大家多多指教)博客文章 因为大家看不到图片,所以我将博客文章保存在word里面 请大家 下载一下啊 帮帮忙看看 多谢指教
是小第自己做的请大家多多指教是小第自己做的请大家多多指教
QQ程序的抽屉效果,希望大家多多指教,好用不好用,只有用了才知道哦
struts,hibernate,spring,初学,写不好,但是实在可以用
用C#开发的秒表 ,该设计纯属自我编写 如果代码有什么不好的地方,请高手多多指教,谢谢。。。新手上路
系统实现了部分功能,数据库应系统崩溃而丢失,写好补上,大家可以先帮我看看有什么不足的地方,待以改进
自定义tableview,实现下拉放大表图图片,上滑显示导航栏,CPKenburnsView实现表图动画效果,点击照片放大,只是业余做的demo,做的不好请大家多多指教
查询时间、日期的批处理,退出时还有问候,本人写的,希望大虾多多指教
请大家帮帮忙,急需要的.枯井框架国朝思暮想查办地东奔西走 国回声轼因艺术团围困苦枯苛政猛于虎大地回春
此为如何删除乱码文件,请各位师傅多多指教
我的一点点心得而已啊!大家多多指教!没有什么不可能的,大家一起加油!
写的不好,多多指教,写的不好,多多指教,写的不好,多多指教,写的不好,多多指教
我做了幅1:500地形图请各位高人多多指教
新手小白自学HTML5的阶段总结若有不足,请各位大佬多多指教
行动记录(python Turtle库,多多指教).py3
一个C#版的时钟,用C#做的一个时钟,有分针、时针和秒针,多多指教
现在正在学习java ,希望各位前辈能多多指教,在下不胜感激!!