JAVA练习程序(七)对象和类(2)

1、定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积。

package edu.uestc.avatar;

public class Circle {
	private double radius;

	public double getRadius() {
		return radius;
	}

	public void setRadius(double radius) {
		this.radius = radius;
	}
/**
 * 返回圆的面积
 * @return
 */
	public double findArea() {
		return radius*radius*3.14;
	}
	
}

package edu.uestc.avatar;

public class CircleDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Circle circle = new Circle();
		circle.setRadius(5);
		System.out.println("面积为:" + circle.findArea());
	}

}

2、定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下:
public void printAreas(Cirlce c, int time)在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积。例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积。在main方法中调用printAreas()方法,调用完毕后输出当前半径值。

package edu.uestc.avatar;

public class PassObject {

	public <Cirlce> void printAreas(Cirlce c, int time) {
		for(int i= 1 ;i<=time ; i++) {
			((Circle) c).setRadius(i);
			System.out.println(i+ "                              " + ((Circle) c).findArea());
		}
	}
}

package edu.uestc.avatar;

public class PassObjectDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Circle circle = new Circle();
		PassObject passobject = new PassObject();
		System.out.println("Radius                         Area");
		passobject.printAreas(circle, 5);
	}
}

3、定义一个士兵类Soldier;定义若干个属性;定义若干个方法(用来对属性进行操作,选一个方法做重载,写不少于3个重载的方法); 定义构造方法(用来对属性进行初始化等);定义一个场景类(含有main方法的类)进行测试(创建对象,调用方法);分别以一个java文件和两个java文件来实现以上功能,对比其异同。

package edu.uestc.avatar;

public class Soldier {
	private String name;
	private int aggressivity = 10;//攻击力
	private int defense = 5;//防御力
	private int health =100;//生命值
	private int weapon = 0;
	
	public Soldier() {		
	}
	
	/**
	 * 自定义士兵信息(没有武器)
	 * @param name
	 * @param aggressivity
	 * @param health
	 */
	public Soldier(String name,int aggressivity,int defense,int health){
		this.name = name;
		this.aggressivity = aggressivity;
		this.defense = defense;
		this.health = health;
		System.out.println("name: "+this.name+"   攻击力: "+this.aggressivity + "   防御力: " + this.defense+ "   生命值: "+ this.health  + "   武器攻击力: "+ this.weapon);
	}
	/**
	 *  自定义士兵信息(有武器)
	 */
	public Soldier(String name,int aggressivity,int defense,int health,int weapon){
		this.name = name;
		this.aggressivity = aggressivity;
		this.defense = defense;
		this.health = health;
		this.weapon = weapon;
		System.out.println("name: "+this.name+"   攻击力: "+this.aggressivity + "   防御力: " + this.defense+ "   生命值: "+ this.health  + "   武器攻击力: "+ this.weapon);
	}
	/**
	 * 攻击
	 */
	public void attack(Soldier enemy) {
		System.out.println(this.name + "攻击" + enemy.name);
		System.out.println("对" + enemy.name + "造成" +  (this.aggressivity + this.weapon - enemy.defense) + "点伤害");
		enemy.health -= (this.aggressivity + this.weapon - enemy.defense) ;
		System.out.println(enemy.name + "剩余生命:" + enemy.health );
	}
	/**
	 * 用技能攻击
	 */
	public void attack(Soldier enemy,boolean attack_falg) {
		System.out.println(this.name + "使用技能攻击" + enemy.name);
		System.out.println("无视防御,对" + enemy.name + "造成" +  (this.aggressivity + this.weapon) + "点伤害");
		enemy.health -= (this.aggressivity + this.weapon) ;
		System.out.println(enemy.name + "剩余生命:" + enemy.health );
	}
	
}

package edu.uestc.avatar;

public class SoldierDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Soldier A = new Soldier("AA",15,6,200);
		Soldier B = new Soldier("BB",13,8,180);
		
		Soldier C = new Soldier("CC",20,7,140,20);//有武器
		Soldier D = new Soldier("DD",17,10,160);//没有武器
		
		System.out.println();
		C.attack(A);
		System.out.println();
		C.attack(A, true);
		System.out.println();
		D.attack(B);
		System.out.println();
		D.attack(B, true);
		
	}

}

4、创建一个学生类Student
1)为其添加三个属性 id name sex
2)添加两个构造方法分别初始化id name sex 和name sex并加入空的构造方法
3)编写一个方法show()使用this关键字显示出学生的所有信息
4)为学生类加入一个静态的属性address
5)创建两个学生对象,分别为address赋值。看其变化
6)根据显示情况画出其内存图

package edu.uestc.avatar;
public class Student {
	private int id = 1;
	private String name;
	private boolean sex;
	public static int address;
	/**
	 * @param id
	 * @param name
	 * @param sex
	 */
	public Student(int id,String name,boolean sex) {
		this.id=id;
		this.name=name;
		this.sex=sex;
	}
/**
 * @param name
 * @param sex
 */
	public Student(String name,boolean sex) {
		this.name=name;
		this.sex=sex;
	}
	/**
	 * 显示出学生的所有信息
	 */
	public void show() {
		System.out.println("id:" + this.id + "   name:" + this.name + "   sex:" + this.sex + "   address:"  +this.address);
	}
}
package edu.uestc.avatar;

public class StudentDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student student1 = new Student("张三", true);
		Student student2 = new Student(2,"李四", true);
		
		student1.address = 1;
		student2.address = 2;
		
		student1.show();
		student2.show();		
	}
}

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值