第一题: 编写类A,该类创建的对象包含一个方法f输出英文字母表,再编写一个A类的子类B,要求必须继承A类的方法f(不允许重写),子类创建的对象不仅可以调用方法f输出英文字线表,而且调用子类新增的方法g输出希腊字母表(α~ω)
class A {
void f() {
char start = 'a', end = 'z';
for (char x = start; x <= end; x++)
System.out.println(x);
}
}
class B extends A{
void g(){
char start='α', end='ω';
for(char x=start;x<=end;x++)
System.out.println(x);
}
}
public class Test{
public static void mian(String args[]) {
B b = new B();
b.f();
b.g();
}
}
第二题:写一个类,该类有一个方法public int f(int a,int b),返回a,b的最大公约数。然后编写一个从该类派生的子类,并重写祖先的 f 方法,且返回a,b 的最小公倍数。要求在子类重写方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将乘积(a*b)/m返回。在应用程序的主类中创建一个父类的对象,例如a,该对象a调用方法f返回最大公约数,然后a作为子类对象的上转型对象调用方法f返回最小公倍数。
class A{
public int f(int a,int b){
if(b<a){
int temp;
temp=a;
a=b;
b=temp;
}
int r=b%a;
while(r!=0){
b=a;
a=r;
r=b%a;
}
return a;
}
}
class B extends A{
public int f(int a,int b){
int division = super.f(a,b);
return a*b/division;
}
}
public class E{
public static void main(String args[]){
A a=new A();
System.out.println(a.f(36,24));
a = new B();
System.out.println(a.f(36,24));
}
}