1.说出下面程序的执行结果:
interface InterfaceA {
String S = "good ";
void f();
}
abstract class ClassA {
abstract void g();
}
class ClassB extends ClassA implements InterfaceA {
void g() {
System.out.print(S);
}
public void f() {
System.out.print(" "+ S);
}
}
public class Test {
public static void main(String[] args) {
ClassA a = new ClassB();
InterfaceA b = new ClassB();
a.g();
b.f();
}
}
//子类不是抽象类 所以覆写父类所有抽象方法
good good
2.编程题:
利用接口做参数,写个计算器,能完成加减乘除运算。
(1)定义一个接口Compute含有一个方法int computer(int n, int m)。
(2)设计四个类分别实现此接口,完成加减乘除运算。
(3)设计一个类UseCompute,类中含有方法:public void useCom(Compute com, int one, int two),此方法能够用传递过来的对象调用computer方法完成运算,并输出运算的结果。
(4)设计一个主类Test,调用UseCompute中的方法useCom来完成加减乘除运算。
interface IComputer{
int computer(int m,int n);
}
class Add implements IComputer{
public int computer(int m, int n){
return m+n;
}
}
class Mul implements IComputer{
public int computer(int m,int n){
return m*n;
}
}
class Sub implements IComputer{
public int computer(int m,int n){
return m-n;
}
}
class Div implements IComputer{
public int computer(int m,int n){
if(n!=0){
return m/n;
}
else{
System.out.print("error!");
return 0;
}
}
}
class UseComputer{
public void useCom(IComputer com,int one,int two){
System.out.println(com.computer(one, two));
}
}
public class Test {
public static void main(String[] args){
UseComputer useComputer=new UseComputer();
useComputer.useCom(new Add(), 3, 4);
useComputer.useCom(new Sub(), 5, 4);
useComputer.useCom(new Mul(), 3, 4);
useComputer.useCom(new Div(), 5, 4);
useComputer.useCom(new Div(), 3, 0);
}
}
3.按如下要求编写Java程序:
(1)定义接口A,里面包含值为3.14的常量PI和抽象方法double area()。
(2)定义接口B,里面包含抽象方法void setColor(String c)。
(3)定义接口C,该接口继承了接口A和B,里面包含抽象方法void volume()。
(4)定义圆柱体类Cylinder实现接口C,该类中包含三个成员变量:底圆半径radius、
圆柱体的高height、颜色color。
(5)创建主类来测试类Cylinder。
interface A{
//接口只允许public权限
double PI=3.14;
double area();
}
interface B{
void setColor(String c);
}
interface C extends A,B{//接口多继承
void volum();
}
class Cylinder implements C{
public double radius;
public double height;
public String color;
public Cylinder(double radius,double height,String color){
this.radius=radius;
this.height=height;
this.color=color;
}
public double area(){
return PI*radius*radius;
}
public void setColor(String c){
System.out.println("圆柱体的颜色为"+color);
}
public void volum(){
System.out.println("圆柱体的体积为"+area()*height);
}
}
public class Test {
public static void main(String[] args){
Cylinder c=new Cylinder(2.1, 2.0, "blue");
c.setColor("blue");
c.volum();
System.out.println("圆柱体的底面积为"+c. area());
}
}
4.(附加题-算法)
一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。
class A{
public boolean Isnumber(int m){
int count=0;
for(int i=1;i<m;i++){
if(m%i==0){
count+=i;
}
}
if(count==m){
return true;
}
return false;
}
}
public class Test{
public static void main(String[] args){
A a=new A();
System.out.println("1000以内的完數為:");
for(int i=1;i<1000;i++){
if(a.Isnumber(i)){
System.out.print(" "+i);
}
}
}
}