类和对象

类和对象
一、开发平台
eclipse
java语言
二、 理论知识
1.类和对象
1)什么是类
生活中,具有相同特征和行为(功能)的对象
程序中,类是具有相同属性和方法的抽象的定义。属性是特征的抽象化,方法是行为(功能)的抽象化。
注意:比如手机,它不是一个对象,需要具体指出一个手机,比如这部手机,才是一个对象。
    
如图,手机有很多种类,对象必须是具体指出的某一个
2)类的格式
public class 类名{
修饰符 数据类型 属性名;——属性
修饰符 返回值 方法名(数据类型 参数名)——方法
{}
}
3)类的组成:属性、方法。
属性是由对象的特征定义的
方法分为两类:1.普通方法  2.构造方法
普通方法是由对象的行为定义的。

4)实例化(在main主类中进行)
关键字是new
类名 对象名=new 类名();
5)调用属性和方法
对象名.属性;
对象名.方法(参数值);
2.构造方法与重载

1)构造方法
格式
访问修饰符  构造方法名(数据类型 参数名,...){
}
注意:a.构造方法名必须要和类名完全一致;
      b.构造方法不能定义返回值类型;
      c.Java会默认提供一个无参数的构造方法
      d.如果在类中定义了其他的构造方法,默认的构造方法就会被覆盖,无法再使用;此时只能使用自定义的构造方法。
2)构造方法的用途
实例化对象的格式:类名 对象名  = new 构造方法名(参数值,...);
a.用来实例化对象
b.可以给属性设置初始值.
3)构造方法和普通方法的区别
a.构造方法的名和类名一样,普通方法不一样
b.构造方法没有返回值类型,而普通方法有
2.方法重载
1)用重载的情形
同一个行为(动作),只是具体的参数不一样,比如说两个人都是买东西这个方法,但是两个人买的内容(参数)是不一样的。
2)重载的条件
a.方法名相同。
b.参数个数,类型,顺序至少有一个不同。
注意:普通方法和构造方法都能被重载
3.this关键字
a.用途
1)参数名和属性名一致,可以使用this来做区分(加上this的表示属性,没有加的则表示参数)
(Java会采用就近原则,优先使用离其最近的参数)
2)
this(参数值,...);调用对应参数的构造方法。
this.方法名(参数值,...);调用对应参数的普通方法。
b.this表示的内容
表示当前调用方法的对象。谁在调用方法,那么方法中的this就是谁。
this(参数值,...);表示对应对象的构造方法
比如Student stu1=new Student(){
stu1.study();}
现在是stu1在调用,那么this就是指的stu1.
4.对象与值的内存分配
1)Student stu=new Student(……);stu存放在栈中,堆中存放stu对应的 student类中的属性和方法,栈存储堆的首地址,并指向堆。
三、应用举例
1.类和对象
情景:小明在写数学作业,当写完后,小明停止写数学作业。
分析:
对象:小明
特征:姓名,作业
行为:写(数学作业)
作业
特征:名字,数量
代码:
1)定义一个学生类
public class Student{
public String name;
public int score;
public void write(Homework a){
a.score--;
System.out.println(name+”正在写”+a.name+”作业,剩余作业量是”+a.score);
If(a.score==0){
System.out.println(name+”已经写完”+a.name+”作业”);

2)定义一个作业类
public class Homework{
public String name;
public int score;

3)主类
public class manager{
public static void main(String[] args){
Student stu=new Student();
stu.name=”小明”;
stu.score=3;
Homework h=new Homework();
h.score=4;
h.name=”数学”;
while(h.score>0){
stu.write(h);
}
2.构造与重载
情形: 奥特曼和小怪兽进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!
如果奥特曼胜利,则奥特曼和Boss进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!
1)定义奥特曼类
public class aoteman {
 public String name;
 public int blood;
 
 public void pk(xiaoguaishou xgs){
			xgs.blood--;
	System.out.println(xgs.name+"剩余血量是"+xgs.blood);
	if(xgs.blood==0)
		System.out.println(name+"胜利了!");
 }
 
 public void pk(boss bo){
	 			bo.blood--;
		System.out.println(bo.name+"剩余血量是"+bo.blood);
				if(bo.blood==0)
			System.out.println(name+"胜利了!");
	 
 }
}

2)定义小怪兽类
public class xiaoguaishou {
	 public String name;
	 public int blood;
	 
	 public void pk(aoteman atm){
		 
				atm.blood--;
			System.out.println(atm.name+"剩余血量是"+atm.blood);
						if(atm.blood==0)
				System.out.println(name+"胜利了!");
	 }
}

3)定义boss类
public class boss {
	 public String name;
	 public int blood;
	 
	 public void pk(aoteman atm){
		 
				atm.blood--;
			System.out.println(name+"剩余血量是"+blood);
			
				
			
			if(atm.blood==0)
				System.out.println(name+"胜利了!");
		 }
		 
	 }

4)定义总类
public class managei {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
aoteman atm=new aoteman();
xiaoguaishou xgs=new xiaoguaishou();
boss bo=new boss();
atm.name="奥特曼";atm.blood=8;
xgs.name="小怪兽";xgs.blood=8;
bo.name="boss";bo.blood=8;

while(atm.blood>0&&xgs.blood>0){
atm.pk(xgs);
if(xgs.blood==0){
	while(atm.blood>0&&bo.blood>0)
	bo.pk(atm);
if(atm.blood==0);
break;
}


xgs.pk(atm);
if(atm.blood==0){
	break;
}
}
}
	}

四、结果截图
1。
.
2.

奥特曼和小怪兽进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!
如果奥特曼胜利,则奥特曼和Boss进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值