Java例题

1.继承

创建Person类,含有属性:name姓名,age年龄。含有方法void eat;方法中打印输出“我爱吃XXX”。含有构造方法,带两个参数,分别是name和age,并利用this关键字传值到成员变量中 。

创建Student类,含有属性:grade,含有方法,void study();方法打印输出:“我热爱学习XXX”。创建包含三个参数的构造方法,分别是name,age,grade,利用super实现父类构造方法传值。重写void eat方法。

创建Teacher类,含有属性:subject,含有方法,void teach();方法打印输出:“我教授的是XXX”。创建包含三个参数的构造方法,分别是name,age,subject,利用super实现父类构造方法传值。重写void eat方法。

创建Test测试类,创建Student对象,并调用带3个参数的构造方法,自己赋值,然后依次调用study方法,eat方法。

创建Teacher对象,并调用带3个参数的构造方法,自己赋值,然后依次调用teach方法,eat方法。

 2.多态

 动物王国

请创建一个Animal动物类,要求有方法eat( )方法,方法输出一条语句“吃东西”。创建一个接口AnimalInfo,接口里有一个抽象方法fly( )。创建一个Bird类继承Animal类并实现接口AnimalInfo里的方法输出一条有语句“鸟儿飞翔”,重写父类的eat( ) 方法输出一条语句“鸟儿吃虫”。

创建Test类并添加main方法,在main方法中添加 如下功能:

(1)创建Animal类的对象并调用eat( )方法;

(2)使用父类引用Bird类的对象,并调用eat( )方法;

(3)使用接口引用Bird类的对象,并调用fly( )方法;

(4)使用Bird类引用Bird类的对象,并调用eat( )方法和fly( )方法。

输出结果如下:
吃东西
鸟儿吃虫
鸟儿飞翔
鸟儿吃虫
鸟儿飞翔

 

3. 私有化,赋值1

请创建一个Car抽象类,要求有brand(品牌)属性,并且要求封装私有化,写出属性的 set、get方法。抽象类Car构造方法中也可以对brand属性赋值,写出一个抽象方法run()。创建一个跑车类SportsCar继承抽象类Car。实现Car抽象方法输出一条语句“超级跑车”,在本类中写出一个自己的方法price(),输出一条语句“售价100w”。在测试类Test类中创建跑车对象car1,用构造器赋值品牌属性,输出属性,调用run()、 price()方法。创建跑车car2,用set方法赋值属性,输出属性,调用run()、price()方法。

评分标准:

1)正确写出抽象类Car ,写出抽象方法—10分

2)封装属性,写出set、get方法—15分

3)正确写出SportsCar类继承Car类和实现run方法—15分

4)创建car1、car2对象并调用方法—10分

5)成功正确输出—10分

显示结果如下:

法拉利

超级跑车

售价100w

兰博基尼

超级跑车

售价100w

 

 

4.私有化,赋值2

首先定义一个抽象类Animal,具有属性:重量,重量要求封装私有化,写出属性的 set、get方法;抽象类Animal构造方法中也可以对重量属性赋值;抽象类中定义二个抽象方法play()和show()。创建 一个猫Cat类,继承Animal并重写play方法输出“猫玩老鼠”;重写show方法输出“猫重几斤”。创建一个猴Monkey类, 继承Animal并重写play方法输出“猴玩球”;重写show方法输出“猴重几斤”。最后编写测试类TestDemo,通 过创建猫,用构造器赋值重量属性,输出属性;并调用猫对象的play方法和show方法。通过创建猴,用set方法赋值属性,get方法输出属性。并调用猴对象的play方法和show方法。

效果如:

猫玩老鼠

猫重3斤

猴玩球

猴重10斤

5.私有化,赋值2

(1)定义一个Flower花类作为父类(20分)

属性:颜色 价格

价格属性要进行封装(即私有属性写set,get方法)

定义无参构造方法,和传两个参数的有参构造方法。

方法:显示详细信息的方法showInfo ()。

(2)定义一个Rose玫瑰花类继承Flower类(20分)

玫瑰花自己的属性:产地(要求对产地属性进行封装 私有化属性)

重写父类中的显示详细信息的方法showInfo,在重写的showInfo方法中通过super调用父类的showInfo方法;并显示产地信息。

再定义一个方法warn警告显示:不要摘玫瑰花,小心扎手! 

(3)定义测试类Test完成:(20分)

①实例化Flower类,调用构造方法赋值,并调用方法,输出:

花的颜色是白色,价格是10元。

②实例化玫瑰花类,调用方法,输出:

花的颜色是紫色,价格是30元。

产地是大理。

不要摘玫瑰花,小心扎手

 

 

 6.时间加法减法

 加法

在程序中,经常要对时间进行操作,请定义实现一个时间类,来满足程序中的需要:(1)定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second)。(2)为了保证数据的安全性,这三个成员变量应声明为私有。(3)为MyTime类定义构造方法,以方便创建对象时初始化成员变量。(4)为MyTime类添加以下三个方法,分别对时、分、秒进行加减运算。
     addSecond(int second)
     addMinute(int minute)
     addHour(int hour)
    注意时、分、秒可以大于或小于0,在进行计算时还应该注意进位。
    如当前时间12:20:40,当调用addSecond( 30)时,则时间变为:12:21:10;(5)重写toString()方法,用于将时间信息打印出来。输出格式为:时:分:秒(12:20:40)测试要求如下:
(1)初始化时间为 12:20:40
(2)增加30秒之后输出时间为:12:21:10
(3)增加70分钟后输出时间为:13:31:10
(4)增加25小时后输出时间为:14:31:10
输出结果如下:
12:21:10
13:31:10
14:31:10

public class MyTime {
    private int hour;
    private int minute;
    private int second;
    public MyTime() {
    	
    }
	public MyTime(int hour, int minute, int second) {
		super();
		this.hour = hour;
		this.minute = minute;
		this.second = second;
	}
    public void addSecond(int second) {
    	this.second+=second;
    	addMinute(this.second/60);
    	this.second=this.second%60;
    }
    public void addMinute(int minute) {
    	this.minute+=minute;
    	addHour(this.minute/60);
    	this.minute=this.minute%60;
    }
    public void addHour(int hour) {
    	this.hour+=hour;
    	this.hour=this.hour%24;
    }
	@Override
	public String toString() {
		return hour+":"+minute+":"+second;
	}
    
}
public class Text {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
       MyTime m=new MyTime(12,20,40);
       m.addSecond(30);
       System.out.println(m.toString());
       m.addMinute(70);
       System.out.println(m.toString());
       m.addHour(25);
       System.out.println(m.toString());

	}

}

减法

public class MyTime {
private int hour;
private int minute;
private int second;
public MyTime() {
	
}
public MyTime(int hour, int minute, int second) {
	super();
	this.hour = hour;
	this.minute = minute;
	this.second = second;
}
public int getHour() {
	return hour;
}
public void setHour(int hour) {
	this.hour = hour;
}
public int getMinute() {
	return minute;
}
public void setMinute(int minute) {
	this.minute = minute;
}
public int getSecond() {
	return second;
}
public void setSecond(int second) {
	this.second = second;
}
public void cutSecond(int second) {
	this.second-=second;
	if(this.second<0) {
		int i=(-this.second)/60;
		this.second=(this.second%60)+60;
		i+=1;
		cutMinute(i);
	}
}
public void cutMinute(int minute) {
	this.minute-=minute;
	if(this.minute<0) {
		int i=(-this.minute)/60;
		this.minute=(this.minute%60)+60;
		i+=1;
		cutHour(i);
	}
}
	public void cutHour(int hour) {
		this.hour-=hour;
		if(this.hour<0) {
			this.hour+=24;	
		}
}
@Override
public String toString() {
	return hour+":"+minute+":"+second;
}
}
public class Text {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
    MyTime m=new MyTime(12,20,40);
    m.cutSecond(50);
    System.out.println(m.toString());
    m.cutMinute(70);
    System.out.println(m.toString());
    m.cutHour(25);
    System.out.println(m.toString());
	}

}

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分支定界法是一种常用于解决优化问题的算法,本例以Java语言为例进行说明。 假设我们有一个背包,它的容量为C。现在有n个物品,每个物品有两个属性:重量和价值。我们的目标是装入背包的物品总价值最大化。假设物品的重量和价值分别存储在两个数组weights和values中。 首先,我们需要创建一个节点类,表示搜索树中的每个节点。以节点类的价值和重量作为评估依据,按照价值密度(价值/重量)排序,使搜索方向更倾向于高价值的物品。 接下来,创建一个优先队列(PriorityQueue),用于存储搜索树中的节点。将根节点(背包为空)加入队列。 然后,进入主循环,直到队列为空或者找到最优解为止。循环过程中,每次将队列中最优节点出队,得到当前节点的价值和重量。 如果当前节点的价值小于已找到的最优解,则继续搜索。否则,说明已经找到比已知最优解更优的解,更新最优解。 对于当前节点的扩展,可以选择放入下一个物品或者不放入。如果放入下一个物品不会超过背包的容量,则将其加入到队列中。放入物品的节点的价值和重量等于当前节点加上物品的价值和重量,不放入物品的节点的价值和重量等于当前节点。 最后,输出最优解即可。 以上就是使用分支定界法解决背包问题的一个示例。该算法的时间复杂度一般为O(2^n),其中n为物品数量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值