题目:
1.通过创建抽象类形状Shape,分别计算圆、长方形、三角形的面积和周长:Shape类中定义将来子类可能会用
到的属性和三个重载的构造方法以及求周长getper()和求面积area()的抽象方法。分别创建圆、长方形、三
角形继承抽象类,实现求周长和求面积的计算。在主类中分别计算圆、长方形、三角形的面积和周长。
2.在第一题的基础上,为Shape增加抽象方法String compareto(Object a),比较两个形状面积的大小,返回
字符结果。三个子类分别实现这个方法比较两个圆、两个长方形、两个三角形的大小。
3.设计一个接口Student,该接口描述的是本科生(StudentG)和硕士生(StudentM)的公共方法:设置姓
名、设置学号,输出所有信息,判断学生是否优秀。在该接口的基础上实现两个类StudentG和StudentM。
StudentG属性:姓名,学号,是否过CET4,上学年综合测评成绩。StudentG包含方法:构造函数,设置是
否过CET4,设置上学年综合测评成绩,接口中定义的所有方法(本科生优秀的标准是过CET4,上学年综合测评
成绩大于85分)。
StudentM属性:姓名,学号,是否过CET6,已发表文章篇数。StudentM包含方法:构造函数,设置是否过
CET6,设置发表文章篇数,接口中定义的所有方法(硕士生优秀的标准是过CET6,已发表文章篇数大于1)。
要求:
(1)实现上述的接口和类;
(2)(在main函数内)实例化五个对象:三个本科生,两个硕士生 (至少各有一个优秀);
(3)用多态的性质来判断所实例化的五个学生是否优秀;
(4)输出优秀学生的所有属性信息。
4.设计一个系统:XXX门的实现过程。
流程:①设计一张抽象的门Door——那么对于这张门来说,就应该拥有所有门的共性,开门openDoor()和关门
closeDoor();
②然后对门进行另外的功能设计,防盗--theftproof()、防水--waterproof()、防弹--bulletproof()、防
火、防锈……
要求:利用继承、抽象类、接口的知识设计该门Imen
5.定义一个接口Assaultable(可攻击的),该接口有一个抽象方法attack()。
定义一个接口Mobile(可移动的),该接口有一个抽象方法move()。
定义一个抽象类Weapon,实现Assaultable接口和Mobile接口,但并没有给出具体的实现方法。
定义3个类:Tank,Flighter,WarShip都继承自Weapon,分别用不同的方式实现 Weapon 类中的抽象方法。
写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器);该
类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用
这一大小来初始化数组w。该类还提供一个方法
addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中。在这个类中还定义两个方法
attackAll()和moveAll(),让w数组中 的所有武器攻击和移 动。
写一个主方法去测试以上程序。
package net.csdn.blog.wdd9527.week03.day04.test04;
/**
* 设计一个接口Student,该接口描述的是本科生(StudentG)
* 和硕士生(StudentM)的公共方法:设置姓名、设置学号,输出所有信息,
* 判断学生是否优秀。在该接口的基础上实现两个类StudentG和StudentM。
* StudentG属性:姓名,学号,是否过CET4,上学年综合测评成绩。
* StudentG包含方法:构造函数,设置是否过CET4,设置上学年综合测评成绩,
* 接口中定义的所有方法(本科生优秀的标准是过CET4,上学年综合测评成绩大于85分)。
* StudentM属性:姓名,学号,是否过CET6,已发表文章篇数。
* StudentM包含方法:构造函数,设置是否过CET6,
* 设置发表文章篇数,接口中定义的所有方法(硕士生优秀的标准是过CET6,已发表文章篇数大于1)。
* 要求:
* 1.实现上述的接口和类;
* 2.(在main函数内)实例化五个对象:三个本科生,两个硕士生 (至少各有一个优秀);
* 3.用多态的性质来判断所实例化的五个学生是否优秀;
* 4.输出优秀学生的所有属性信
*
* @author WDD
*
*/
public class Main {
public static void main(String[] args) {
//实例化三个本科生
Student s1 = new StudentG("张三", "0001", true, 88);
Student s2 = new StudentG("李四", "0002", true, 78);
Student s3 = new StudentG("赵五", "0003", false, 97);
//实例化俩个硕士生
Student s4 = new StudentM("钱六", "0004", true, 3);
Student s5 = new StudentM("孙七", "0005", false, 5);
//判断五个学生是否优秀
s1.isGood();
s2.isGood();
s3.isGood();
s4.isGood();
s5.isGood();
}
}
package net.csdn.blog.wdd9527.week03.day04.test04;
public interface Student {
//设置姓名
public void setName(String name);
//设置学号
public void setNumber(String number);
//输出所有信息
public void outputAll();
//判断学生是否优秀
public void isGood();
}
package net.csdn.blog.wdd9527.week03.day04.test04;
public class StudentG implements Student {
String name;//姓名
String number;//学号
boolean CET4;//是否过CET4
double score;//上学年综合测评成绩
//设置上学年综合测评成绩
public void setScore(double score) {
this.score = score;
}
//设置是否过CET4
public void setCET4(boolean cET4) {
CET4 = cET4;
}
public StudentG(String name, String number, boolean cET4, double score) {
super();
this.name = name;
this.number = number;
CET4 = cET4;
this.score = score;
}
public StudentG() {
super();
}
@Override
public void setName(String name) {
// TODO Auto-generated method stub
this.name = name;
}
@Override
public void setNumber(String number) {
// TODO Auto-generated method stub
this.number = number;
}
@Override
public void outputAll() {
// TODO Auto-generated method stub
System.out.println("姓名:" + this.name + ",学号:" + this.number +
",是否过了CET4:" + this.CET4 + ",上学年综合测评成绩:" + this.score);
}
//本科生优秀的标准是过CET4,上学年综合测评成绩大于85分
@Override
public void isGood() {
// TODO Auto-generated method stub
if (CET4 && this.score > 85) {
System.out.println(this.name + "是优秀的");
System.out.println(this.name + "的信息如下:");
this.outputAll();
} else {
System.out.println(this.name + "不是优秀的");
}
}
}
package net.csdn.blog.wdd9527.week03.day04.test04;
public class StudentM implements Student {
String name;//姓名
String number;//学号
boolean CET6;//是否过CET6
int publishArticle;//已发表文章篇数
//设置是否过CET6
public void setCET6(boolean cET6) {
CET6 = cET6;
}
//设置发表文章数
public void setPublishArticle(int publishArticle) {
this.publishArticle = publishArticle;
}
public StudentM(String name, String number, boolean cET6, int publishArticle) {
super();
this.name = name;
this.number = number;
CET6 = cET6;
this.publishArticle = publishArticle;
}
public StudentM() {
super();
}
@Override
public void setName(String name) {
// TODO Auto-generated method stub
this.name = name;
}
@Override
public void setNumber(String number) {
// TODO Auto-generated method stub
this.number = number;
}
@Override
public void outputAll() {
// TODO Auto-generated method stub
System.out.println("姓名:" + this.name + ",学号:" + this.number +
",是否过了CET6:" + this.CET6 + ",已发表文章篇数:" + this.publishArticle);
}
@Override
public void isGood() {
// TODO Auto-generated method stub
if (CET6 && this.publishArticle > 1) {
System.out.println(this.name + "是优秀的");
System.out.println(this.name + "的信息如下:");
this.outputAll();
} else {
System.out.println(this.name + "不是优秀的");
}
}
}
package net.csdn.blog.wdd9527.week03.day04.test06;
/**
* 定义一个接口Assaultable(可攻击的),该接口有一个抽象方法attack()。
* 定义一个接口Mobile(可移动的),该接口有一个抽象方法move()。
* 定义一个抽象类Weapon,实现Assaultable接口和Mobile接口,但并没有给出具体的实现方法。
* 定义3个类:Tank,Flighter,WarShip都继承自Weapon,
* 分别用不同的方式实现 Weapon 类中的抽象方法。
* 写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w
* (用来存储该军队所拥有的所有武器);该类还提供一个构造方法,
* 在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,
* 并用这一大小来初始化数组w。该类还提供一个方法
* addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中
* 在这个类中还定义两个方法attackAll()和moveAll(),让w数组中 的所有武器攻击和移 动。
* 写一个主方法去测试以上程序。
*
* @author WDD
*
*/
public class Main {
public static void main(String[] args) {
//初始化一个军队
Army army = new Army(5);
//初始化三个武器
Weapon a = new Tank();
Weapon b = new Flighter();
Weapon c = new WarShip();
System.out.println("添加装备:");
//为武器库添加装备
army.addWeapon(a);
army.addWeapon(b);
army.addWeapon(c);
army.addWeapon(c);
army.addWeapon(b);
army.addWeapon(a);
//测试
System.out.println("测试攻击:");
army.attackAll();
System.out.println("测试移动:");
army.moveAll();
}
}
package net.csdn.blog.wdd9527.week03.day04.test06;
//代表一支军队
public class Army {
Weapon[] w; //用来存储该军队所拥有的所有武器
public Army(int a) {
this.w = new Weapon[a];
}
public void addWeapon(Weapon wa) {
for (int i = 0; i < w.length; i++) {
if (w[i] == null ) {
w[i] = wa;
System.out.println("武器添加成功。 ");
break;
} else if (w[w.length - 1] != null) {
System.out.println("武器库已满,无法添加。");
break;
}
}
}
public void attackAll() {
for (int i = 0; i < w.length; i++) {
if (w[i] == null) {
break;
} else {
w[i].attack();
}
}
}
public void moveAll() {
for (int i = 0; i < w.length; i++) {
if (w[i] == null) {
break;
} else {
w[i].move();
}
}
}
}
package net.csdn.blog.wdd9527.week03.day04.test06;
//可攻击的
public interface Assaultable {
public abstract void attack();
}
package net.csdn.blog.wdd9527.week03.day04.test06;
//可移动的
public interface Mobile {
public abstract void move();
}
package net.csdn.blog.wdd9527.week03.day04.test06;
//武器,兵器类
public abstract class Weapon implements Assaultable,Mobile{
}
package net.csdn.blog.wdd9527.week03.day04.test06;
//坦克类
public class Tank extends Weapon{
@Override
public void attack() {
// TODO Auto-generated method stub
System.out.println("砰砰砰,大炮射你!!!!");
}
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("我会跑!!!!");
}
}
package net.csdn.blog.wdd9527.week03.day04.test06;
//战斗机类
public class Flighter extends Weapon{
@Override
public void attack() {
// TODO Auto-generated method stub
System.out.println("哒哒哒,机枪射你~~~~");
}
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("我会飞~~~~");
}
}
package net.csdn.blog.wdd9527.week03.day04.test06;
//战舰类
public class WarShip extends Weapon{
@Override
public void attack() {
// TODO Auto-generated method stub
System.out.println("轰轰轰,导弹射你....");
}
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("我会游....");
}
}
总结:
byte short int long float double char boolean
Byte Short Integer Long Folat Double Character Boolean
Integer i=100;
Integer i=Integer.valueOf(100);
public static Integer valueOf(int i) {
//判断你取的值是不是在某一个范围之内(-128~127)
if (i >= IntegerCache.low && i <= IntegerCache.high)
//如果在这个范围内,就将缓存(数组)中的内存地址返回给你
return IntegerCache.cache[i + (-IntegerCache.low)];
//不在范围内的重新new对象
return new Integer(i);
}
//这是给缓存数组赋值的代码
//声明数组的长度为256,-128~127有256个数
cache = new Integer[(high - low) + 1];
int j = low;//-128
//给数组赋值,将-128赋值在第0个值上,-127赋值在第1个下标
for(int k = 0; k < cache.length; k++)
cache[k] = new Integer(j++);
1.包装类:使基本数据类型作为一个对象去研究而设计出来的
2.装箱:将基本数据类型的值进行包装,包装为引用数据类型
Integer i=1;,他属于自动装箱,默认调用valueOf()这个方法
3.拆箱:将包装类型的值拆出来用基本数据类型去接收
int a=new Integer(1);
只有包装类型和基本数据类型做比较的时候回去做
Integer i=new Integer(1);
int a=1;
a==i//false
int i1=i;//拆箱
a==i1;//true
4.对缓存要敏感,-128~127之间,这中间的值,是从缓存中拿值,所以大家是直线同一个内存地址,超出这个范围就是new对象
"123"===>123
"true"===>true
"3.14"===>3.14
String a="123";
System.out.println(a+1);//1231
int a1=Integer.parseInt(a);
System.out.println(a1+1);//124
String b="3.14";
double b1=Double.parseDouble(b);
System.out.println(b1+1);//4.14
注意:没有Character.parseCharacter(str)这样的方法
字符串转换为字符
"a"===>'a'
.charAt(0);
String a="a";
char c=a.charAt(0);
System.out.println(c+1);//98
1,基本数据类型转换成字符串
String.valueOf();
2.字符串转换为基本数据类型
XXX.parseXXX()
3.
MAX_VALUE MIN_VALUE两个常量表示的是最值
4.int a=97;
System.out.println(a+"的二进制是"+Integer.toBinaryString(a));
System.out.println(a+"的八进制是"+Integer.toOctalString(a));
System.out.println(a+"的十六进制是"+Integer.toHexString(a));