A. 一道java编程题 通过继承java.Util.Random类设计一个类RandomEX,并实现
Java程序:
importjava.util.Random;
publicclassHardWork{
publicstaticvoidmain(String[]args){
RandomEXrand=newRandomEX();
intn=4;
intgroup=10;
for(inti=0;i<group;i++){
.out.printf("第%2d组: ",i+1);
System.out.printf("1~%d长度二进制字符串: %s ",n,rand.nextBinaryString1(n));
System.out.printf("固定%d长度二进制字符串: %s ",n,rand.nextBinaryString2(n));
System.out.printf("1~%d长度十六进制字符串: %s ",n,rand.nextHexString1(n));
System.out.printf("固定%d长度十六进制字符串: %s ",n,rand.nextHexString2(n));
System.out.println();
}
}
}
/**
*随机数类
*@author冯向科
*@version2016.05.07
*/
classRandomEXextendsRandom{
=1L;
/**
*产生随机长度为1~n的二进字符串
*@paramn字符串最大长度
*@return长度为1~n的二进制字符串
*/
publicStringnextBinaryString1(intn){
longnum;
StringBuilderstr=newStringBuilder();
intlen;
do{
num=this.nextLong();
str.append(Long.toBinaryString(num));
len=str.length();
}while(len<n);
intsize=this.nextInt(n)+1;
returnstr.substring(0,size);
}
/**
*产生固定长度为n的二进字符串
*@paramn字符串固定长度
*@return固定长度为n的二进字符串
*/
publicStringnextBinaryString2(intn){
longnum;
StringBuilderstr=newStringBuilder();
intlen;
do{
num=this.nextLong();
str.append(Long.toBinaryString(num));
len=str.length();
}while(len<n);
returnstr.substring(0,n).toUpperCase();
}
/**
*产生随机长度为1~n的十六进字符串
*@paramn字符串最大长度
*@return长度为1~n的十六进制字符串
*/
publicStringnextHexString1(intn){
longnum;
StringBuilderstr=newStringBuilder();
intlen;
do{
num=this.nextLong();
str.append(Long.toHexString(num));
len=str.length();
}while(len<n);
intsize=this.nextInt(n)+1;
returnstr.substring(0,size).toUpperCase();
}
/**
*产生固定长度为n的十六进字符串
*@paramn字符串固定长度
*@return固定长度为n的十六进字符串
*/
publicStringnextHexString2(intn){
longnum;
StringBuilderstr=newStringBuilder();
intlen;
do{
num=this.nextLong();
str.append(Long.toHexString(num));
len=str.length();
}while(len<n);
returnstr.substring(0,n).toUpperCase();
}
}
运行测试:
第 1 组:
1~4长度二进制字符串: 11
固定4长度二进制字符串: 1010
1~4长度十六进制字符串: 44B
固定4长度十六进制字符串: A7C3
第 2 组:
1~4长度二进制字符串: 110
固定4长度二进制字符串: 1110
1~4长度十六进制字符串: E96D
固定4长度十六进制字符串: 61F1
第 3 组:
1~4长度二进制字符串: 101
固定4长度二进制字符串: 1111
1~4长度十六进制字符串: B1C
固定4长度十六进制字符串: A0F1
第 4 组:
1~4长度二进制字符串: 1101
固定4长度二进制字符串: 1010
1~4长度十六进制字符串: 1DC
固定4长度十六进制字符串: D38E
第 5 组:
1~4长度二进制字符串: 1
固定4长度二进制字符串: 1110
1~4长度十六进制字符串: 70D8
固定4长度十六进制字符串: 495B
第 6 组:
1~4长度二进制字符串: 1100
固定4长度二进制字符串: 1011
1~4长度十六进制字符串: F6
固定4长度十六进制字符串: 5086
第 7 组:
1~4长度二进制字符串: 100
固定4长度二进制字符串: 1100
1~4长度十六进制字符串: 86A
固定4长度十六进制字符串: 23A0
第 8 组:
1~4长度二进制字符串: 1
固定4长度二进制字符串: 1101
1~4长度十六进制字符串: 8
固定4长度十六进制字符串: F967
第 9 组:
1~4长度二进制字符串: 110
固定4长度二进制字符串: 1000
1~4长度十六进制字符串: F194
固定4长度十六进制字符串: 7C3D
第 10 组:
1~4长度二进制字符串: 1101
固定4长度二进制字符串: 1100
1~4长度十六进制字符串: 4
固定4长度十六进制字符串: FB2A
B. java继承多态的练习题
Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
java多态存在的三个必要条件:
1.需要有继承关系的存在
2.需要有方法的重写
3.需要有父类的引用指向子类对象
希望对你有帮助。
第一题应该选D,第二题选C,D。
第一题属于多态,methodB()方法属于子类,父类没有重写子类的方法
第二题属于继承,子类可以继承父类的方法
C. Java关于继承、多态(接口和包)的编程题
package animal.mammal;
// 狗类
public class Dog extends Mammal{
void speak(){
System.out.println("Woof!");
}
void yaoweiba(){
System.out.println("Tail wagging...");
}
void qitaoshiwu(){
System.out.println("begging for food...");
}
}
// 同理写猫,马,猪,其中都必须有方法 void speak() 输出各不相同,其他方法自定义
public class Cat extends Mammal{
}
public class Horse extends Mammal{
}
public class Pig extends Mammal{
}
// 另外是宠物猫,宠物狗的
package animal.mammal.pet;
public class PetCat extends Cat{
doucle price = 40.00;
String ownername = peter;
void Price(){
System.out.println("PetCat price:" + this.price);
}
void Owner(){
System.out.println("this's " + this.ownername +" petCat");
}
}
// 同理写宠物狗的,如果需要 get/set 则为 price,ownername 加上该方法
public class PetDog extends Dog{
}