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();
}
}
classB类继承了抽象类classA并实现了接口interfaceA,在classB中覆写了抽象类A的g方法,还定义了接口A的方法,最终在main函数中,向上实例化一个抽象类A的实例a,一个接口A的实例b,通过a,b来调用他们各自的方法,则输出一个good(来自a.g())和一个(空格) good(来自b.f)。
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 ICompute{
int computer(int n,int m);
}
class UseCompute{
private int n;
private int m;
public void useCom(ICompute com,int one,int two){
this.n=one;
this.m=two;
com.computer(n,m);
}
}
class Add implements ICompute{
private int n;
private int m;
private int result;
public int computer(int n,int m){
this.m=m;
this.n=n;
this.result=n+m;
System.out.println("n+m is" + result);
return result;
}
}
class Minus implements ICompute{
private int n;
private int m;
private int result;
public int computer(int n,int m){
this.m=m;
this.n=n;
this.result=n-m;
System.out.println("n-m is" +result);
return result;
}
}
class Mul implements ICompute{
private int n;
private int m;
private int result;
public int computer(int n,int m){
this.m=m;
this.n=n;
this.result=n*m;
System.out.println("n*m is" +result);
return result;
}
}
class Div implements ICompute{
private int n;
private int m;
private int result;
public int computer(int n,int m){
this.m=m;
this.n=n;
this.result=n/m;
System.out.println("n/m is" +result);
return result;
}
}
public class Test {
public static void main(String[] args) {
UseCompute a=new UseCompute();
a.useCom(new Add(),8,2);
a.useCom(new Minus(),8,2);
a.useCom(new Mul(),8,2);
a.useCom(new Div(),8,2);
}
}
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 {
double PI=3.14;
void doubleArea();
}
interface B{
void setColor(String c);
}
interface C extends A,B {
void volume();
}
abstract class tmp implements C{
public void doubleArea(){};
public void setColor(String c){};
public void volume(){};
}
class Cylinder extends tmp{
private double PI=3.14;
private double radius;
private double height;
private String color;
public void doubleArea(double radius){
this.radius=radius;
System.out.println("radius is "+(radius*PI));
}
public void setColor(String c){
this.color=c;
System.out.println("color is "+color);
}
public void volume(double radius,double height){
this.height=height;
this.radius=radius;
System.out.println("volume is "+(radius*height*PI)); }
}
class Example{
public static void main(String []args){
Cylinder cyl1=new Cylinder();
cyl1.doubleArea(3.00);
cyl1.setColor("原谅绿");
cyl1.volume(3.00,3.00);
}
}
4.(附加题-算法)
一个数如果恰好等于它的因子之和,这个数就称为 “完数 “。例如6=1+2+3.编程 找出1000以内的所有完数。
public class number {
public static void main(String[] args) {
for(int i=0;i<1000;i++){
int sum=0;
for(int j=1;j<i;j++){
if(i%j==0){
sum=sum+j;
}
}
if(i==sum){
System.out.println("完数为"+sum);
}
}
}
}