Java面向对象编程练习题
专题1 初识Java
一、填空题
( ME )。1.自从Sun推出Java以来,按应用范围可分为三个版本,分别是(SE)、
( EE )、
2.环境变量的设置,若JDK安装在“D:\JDK”,则应设置Path为()、classpath
为()。
3.Java源文件的扩展名为(),用Javac编译Java源文件,得到的字节码文件的扩
展名为()。
4.如果Java源文件中有多个类,那么只能有一个类是()类。
5.Java程序可以分成两类,即()和()。
二、选择题
1.作为Java应用程序入口的main方法,其声明格式是(B )
A.public static int main(String args[]) B.public static void main(String args[])
C.public void main(String args[]) D.public int main(String args[]) 2.下面命令正确的是(B)
A.java AppFirst.java B.java AppFirst
C.java appfirst.class D.javac AppFirst
3.设有一个Java小程序,源程序名为FirstApplet.java,其class文件为FirstApplet.calss,则运行该小程序的命令为(B)
A.java FirstApplet B.javac FirstApplet.java C.appletviewer FirstApplet.java D.appletviewer FirstApplet.html
4.JDK安装完成后,主要的命令如javac、java等,都存放在根目录的(A)文件夹下。
A.bin B.jre C.include D.doc
5.Java语言是一种 D 语言。
A.机器B.汇编C.面向过程的D.面向对象的
6、Java程序的最基本组成单位是 D 。
A.函数B.过程C.变量D.类
三、简答题(十分重要)
1.Java语言有哪些特点?
跨平台、一种简单、面向对象、分布式、半编译半解释、健壮、安全、多线程2.JDK安装完成后,如何设置环境变量?
Path 配置:
1)我的电脑—属性—高级—环境变量—系统变量
2)新建变量名:path 变量值: jdk中bin的路径
C:\Program Files\Java\jdk1.6.0_02\bin;
配置 Class Path :
1)我的电脑—属性—高级—环境变量—系统变量
2)新建变量名:classpath 变量值: .;jdk中lib的路径;
C:\Program Files\Java\jdk1.6.0_02\lib;
3.简述Java应用程序和小应用程序的区别。
4.简述Java应用程序的开发过程
专题2 标识符、表达式、数据类型
一、填空题
1.Java逻辑常量有两个:(true )和( false)。
2.写出下列表达式的运算结果,设a=2,b=-4,c=true。
(1)-a%b++ -2
(2)a>=1 && a <= 10 ? a : b true
(3)c^(a>b) false
(4)(-a)< (5)(double)(a+b)/5+a/b -0.4 3、比较两个数相等的运算符是: == 。 4、Java中的八种基本数据类型分别是:char、int 、 long 、 short 、 boolean 、float 、 double和 byte 。 二、选择题 1.下面这些标识符哪个是错误的(C) A.Javaworld B._sum C.2Java Program D.$abc 2.下列哪一组运算符的优先级顺序是从高到低排列的(B) A.|、&、! B.&、^、|| C.!、%、++ D.<、<<、++ 3、下面哪个赋值语句不会产生编译错误(D ) A.char a=’abc’; B.byte b=152; C.float c=2.0; D.double d=2.0; 4.下面哪个单词是Java语言的关键字(D) A.False B.FOR C.For D.for 5.执行下面程序后,哪个结论是正确的(A ) int a, b, c; a=1; b=3; c=(a+b>3 ? ++a : b++); A.a的值为2,b的值为3,c的值为1 B.a的值为2,b的值为4,c的值为2 C.a的值为2,b的值为4,c的值为1 D.a的值为2,b的值为3,c的值为2 6.设各个变量的定义如下,哪些选项的值为true ( C) int a=3, b=3; boolean flag=true; A.++a = = b B.++a= = b++ C.(++a = = b) || flag D.(++a= =b) & flag 7.表达式(int)6.5/7.5*3的值的类型为(B)? A.short B.int C.double D.float 8.设a, b, x, y, z均为int型变量,并已赋值,下列表达式的结果属于非逻辑值的是(D) A.x>y && bx-y C.y = = ++x D.y+x*x++ 9.下面语句输出的结果为(B ) Syste.out.println(5^2); //二进制比较 0101^0010=0111 A.6 B.7 C.10 D.25 10.对下面的语句执行完后正确是:(D ) int c=’c’/3; System.out.println(c); A.输出结果为21 B.输出结果为22 C.输出结果为32 D.输出结果为33 11.以下选项中变量a已定义类型,合法的赋值语句为(A) A.a = int(y); B.a= =1; C.a = a+1=3; D.++a; 12.执行下列程序段后,ch,x,y的值正确的是:(D ) int x=3, y=4; boolean ch; ch=x A.true,3,4 B.true,4,3 C.false,3,4 D.false,4,3 13.下列标识符中,正确的是 B 。 A、1_Back B、$_Money C、$-money D、2-Forward 14.现有一个int类型的整数和一个double类型的浮点数,当它们之间做了加法运算之后,得到的结果类型应该是 B 。 A、int类型 B、double类型 C、float类型 D、long类型 15、以下程序的运行结果为 A 。 public class A { public static void main(String a[]) { int x = 2, y = 5; String z = "5"; System.out.println(x + y); System.out.println(x + z + "x+z"); System.out.println("x+y=" + x + y); System.out.println("x+z=" + (x + z)); } } A.7 B.7 C.25 D.7 25x+z 7x+z 25x+z 25x+z x+y=25 x+y=25 x+y=7 x+y=25 x+z=25 x+z=7 x+z=25 x+z=7 16、设有定义int a=12;则执行a*=12;语句后,a的值为: A 。 A.144 B.12 C.24 D.0 17、下列标识符中,合法的一个是C。 A.$#@!$ B.$我们$ C.$22$ D.2$$2 18、执行下列程序段后,b, x, y的值分别是 D 。 int x=6,y=8; boolean b; b=x>y&&++x==--y; A.true , 6, 8 B.false , 6, 8 C.e, 7, 7 D.false, 7, 7 19、下列程序运行的结果是d。 public class A { public static void main(String args[]) { int x = 7%3; while(x){ x--; } System.out.println(x); } } A.0 B.1 C.true D.编译错误 三、编程题 1.使用Math.pow()方法,求出2的32次方的值。 public class Tip { public static void main(String[] args){ double i=2; double t=0; t=Math.pow(2, 32); System.out.print(t); } } 专题3 流程控制语句 一、填空题 1.在switch语句中的表达式的类型必须是( int )或者( char )。2.break在循环语句中的作用是(跳出循环)。 3.分支语句包括(if )和(switch )。 4.while循环语句的循环次数( n ),do-while语句的循环次数(n+1 ),for语句的循环次数(n )。 二、选择题 1.下面程序片段输出的是什么( C) int a=3, b=1; if(a=b) Syste.out.println(“a=”+a); A.a=1 B.a=3 C.编译错误,没有输出 D.正常运行,但没有输出2.下面语句执行后,x的值为(C ) int a=4, b=5, x=3; if(++a==b) x=x*a; A.3 B.12 C.15 D.20 3.请看下面的程序代码: if(x<0) {Syste.out.println(“first”);} else if(x<20) {Syste.out.println(“second”);} else {Syste.out.println(“third”);} 当程序输出“second”时,x的范围是() A.x<=0 B.x<20 && x>=0 C.x>0 D.x>=20 4.请看下面的程序代码: switch(n){ case 0: Syste.out.println(“first”); case 1: case 2: Syste.out.println(“second”); break; default: Syste.out.println(“end”); } 当n为何值时,程序段将输出字符串”second”() A. 0 B.1 C.2 D.以上都可以 5.下列语句执行后,j的值是() int j=3, i=3; while(--i!=i/j) j=j+2; A. 4 B.5 C.6 D.7 6.下列语句执行后,x的值是(D) int x=2 ; do{x+=x ; }while(x<17); A. 4 B.16 C.32 D.256 7.执行下列语句后,i、j的值是() int i=1, j=8; do{ if(i++>--j) continue; }while(i<4); A. i=4, j=5 B.i=5,j=4 C.i=5,j=5 D.i=5,j=6 8.下列语句执行后,k的值是() int j=4, i, k=10; for(i=2; i!=j; i++) k=k-i; A. 4 B.5 C.6 D.7 9.下列语句执行后,c的值是() char c=’\0’; for(c=’a’; c<’z’; c+=3){ if(c>=’e’) break; } A.‘e’ B.’f’ C.’g’ D.’h’ 10.若变量都已经正确说明,则以下程序段输出为() a=10; b=50; c=30; if(a>b) a=b;b=c; c=a; System.out.p rintln(“a=”+a+” b=”+b+” c=”+c); A.a=10 b=50 c=10 B.a=10 b=30 c=10 C.a=50 b=30 c=10 D.a=50 b=30 c=30 11.以下程序段输出是() int x=1,y=0,a=0,b=0; i=(--a==b++)? - -a : ++b; j=a++; k=b; System.out.println(“i=”+i+” ,j=”+j+” ,k=”+k); 2 -1 2 A.i=2,j=1,k=3 B.i=1,j=1,k=2 C.i=4,j=2,k=4 D.i=2,j=-1,k=2 12.以下程序的输出是() int x=1,y=0,a=0,b=0; switch(x){ case 1: switch(y){ case 0: a++;break; case 1: b++;break; } case 2: a++;break; case 3: a++;b++; } System.out.println(“a=”+a+”,b=”+b); 2 0 A.a=1, b=0 B.a=2,b=0 C.a=1, b=1 D.a=2, b=2 13.以下程序段输出是() int i=0,j=0,a=6; if ((++i>0) || (++j>0 )) a++ : System.out.println(“i=”+i+” ,j=”+j+” ,a=”+a); A.i=0,j=0,a=6 B.i=1,j=1,a=7 C.i=1,j=0,a=7 D.i=0,j=1,a=7 14、下列程序运行的结果是。 public class A{ public static void main(String args[]){ char c = 'd'; for (int i = 1; i <= 4; i++) { switch (i){ case 1: c = 'a'; System.out.print(c); break; case 2: c = 'b'; System.out.print(c); break; case 3: c = 'c'; System.out.print(c); default: System.out.print("!"); } } } } A.!B.dbc!C.abc!D.abc!! 三、编程题 1.输入4个数,将这4个数按从小到大输出。 2.输入一个年份值,判断是否是闰年,输出相应的信息。 3.输入一元二次方程系数,若有实数根,求根并输出,否则输出“不是二次方程或没有实数根” 的信息。 4.编写程序,计算邮局汇款的汇费:如果汇款金额小于100元,汇费为1元,如果金额在100元与500元之间,按1%收取汇费,如果金额大于500元,汇费为50元。 5.求某年某月的天数. 6.求从1到100之间所有奇数的平方和(用for、while和do……while编写程序)。 7.求S=1+2+3+…+n之和,S<1000的最大n的值。 8. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 9.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个,到第十天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少? 10.输出九九乘法表。 11.输出1000之内的所有完数。所谓完数指的是:如果一个数恰好等于它的所有因子之和,这个数就称为完数。 12.输出100以内的全部素数。 13.求1!+2!+3!+ (10) 14.求2+22+222+2222+22222。 专题4 数组 一、填空题 1.定义一个整型数组y,它有5个元素分别是1,2,3,4,5.用一个语句实现对数组y的声明、创建和赋值:()。 2.设有整型数组的定义:“int x[][]={{12,34},{-5},{3,2,6}};”则x.length的值为() 3.求取二维数组a[][]的第i行元素个数的表达式是()。 4、一个一维数组有10个元素,则该数组可用的下标范围是。 5、String S[]={“安徽”, “江苏”, “山东”};则S[1]的值是:。 6、当声明一个数据组int arr[]=new int[5];时,这代表这个数组所保存的变量类型是,数组元素下标的使用范围是。 二.选择题 1.设有定义语句“int a[]={66,88,99};”,则以下对此语句的叙述错误的是()A.定义了一个名为a的一维数组 B.a数组有3个元素 C.a数组的元素的下标为1~3 D.数组中的每个元素是整数 2.设有定义“int[] a=new int[4];”则数组a的所有元素是() A.a0、a1、a2、a3 B.a[0]、a[1]、a[2]、a[3] C.a[1]、a[2]、a[3]、a[4] D.a[0]、a[1]、a[2]、a[3]、a[4] 3.下面哪个选项正确地声明了一个字符串数组() A.char[] str B.char[][] str C.String[] str D.String[10] str 4、假设有这样的数组创建:int a[]={1,2,3,4,5,6,7};则该数组长度为。 A.4 B.5 C.6 D.7 5、下列二维数组的创建中错误的是。 A.int a[][]=new int[3][] ; B.int[][] a=new int[3][4] ; C.int a[][]={{1,2},{3,4}} ; D.int [][] a=new int[][]; 三、编程题 1.编写一个程序,计算一维数组中的最大值、最小值及其差值。 2.将一个数组中的数逆序重新存放。 3.已知数组(12,23,26,45,58,60)是有序的,输入一个数x,将它插入到数组中,保证数组仍然是有序的。 4.输出杨辉三角形。如: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 …… 5.求一个二维数组的每行最大数。 **专题5 面向对象 一、填空题 1.如果一个方法不返回任何值,则该方法的返回值类型为。 2.如果子类中的某个方法名、返回值类型和_传递参数_______与父类中的某个方法完全一致,则称子类中的这个方法覆盖了父类的同名方法。 3.接口中所有的属性均为_公有__、__静态_____和_常量_____的 4.方法是一种仅有方法声明,没有具体方法体和操作实现的方法,该方法必须在类之中定义。 5.在Java程序中,通过类的定义只能实现重继承,但通过的定义可以实现多重继承关系。 6.一般Java程序的类主体由两部分组成:一部分是,另一部分是。7.分别用关键字来定义类,用关键字来分配实例存储空间。 8.当一个类的修饰符为时,说明该类不能被继承,即不能有子类。 9.在Java中,能实现多重继承效果的方式是。 二、选择题 1.方法内定义的变量()。 A.一定在方法内所有位置可见 B.可能在方法的局部位置可见 C.在方法外可以使用 D.在方法外可见 2.方法的形参()。 A.可以没有B.至少有一个 C.必须定义多个形参D.只能是简单变量 3.return语句()。 A.不能用来返回对象B.只可以返回数值 C.方法都必须含有D.一个方法中可以有多个 4.main()方法的返回值类型是(。 A.boolean B.int C.void D.static 5.编译并运行下面的程序,运行结果是()。 public class A{ public static void main(String args[]){ A a=new A(); a.method(8); } void method(int i){ System.out.println(“int: ”+i); } void method(long i){ System.out.println(“long: ”+i); } A.程序可以编译运行,输出结果为:“int: 8” B.程序可以编译运行,输出结果为:“long: 8” C.程序有编译错误,因为两个method()方法必须定义为静态(static)的 D.程序可以编译运行,但是没有输出 6.能作为类及其成员的修饰符是()。 A.interface B.class C.protected D.public 7.下列方法定义中,方法头不正确的是()。 A.public static x(double a){…} B.public static int x(double y){…} C.void x(double d){…} D.public int x(){…} 8.构造方法在()时被调用。 A.类定义时B.使用对象的变量时 C.调用对象方法时D.创建对象时 9.下列哪个类声明是正确的()。 A.public abstract class Car{…} B.abstract private move(){…} C.protected private number; D.abstract final class H1{…} 10.下列不属于面向对象程序设计的基本特征的是()。 A.抽象B.封装 C.继承D.多态 11.请看下面的程序段 class Person{ String name,department; int age; public Person(String n){name=n;} public Person(String n,int a){name=n; age=a;} public Person(String n, String d, int a ){ //doing the same as two arguments version if constructer } 下面那个选项可以添加到// doing the same……处() A.Person(n,a)B.this(Person(n,a)) C.this(n,a) D.this(name.age) 12.请看下面的程序段 class Test{ private int m; public static void fun(){ //some code } } 方法fun()如何来访问变量m() A.将private int m 改成protected int m B.将private int m 改成public int m C.将private int m 改成static int m D.将private int m 改成int m 13.有一个类A,对于其构造函数的声明正确的是()。 A.void A(int x){…} B.public A(int x){…} C.A A(int x){…} D.int A(int x){…} 14.请看下面的程序段 public class Test{ long a[]=new long[10]; pubic static void main(String args[]){ System.out.println(a[6]); } } 哪一个选项是正确的()。 A.不输出任何内容B.输出0 C.当编译时有错误出现D.当运行时有错误出现 15.关键字()表明一个对象或变量在初始化后不能修改。 A.extends B.final C.this D.finalize 16.声明为static的方法不能访问()类成员。 A.超类B.子类 C.非static D.用户自定义类 17.定义类A如下:(重要) class A{ int a,b,c; public void B(int x,int y, int z){ a=x;b=y;c=z;} } 下面对方法B的重载哪些是正确的()。 A.public void A(int x1,int y1, int z1){ a=x1;b=y1;c=z1;} B.public void B(int x1,int y1, int z1){ a=x1;b=y1;c=z1;} C.public void B(int x,int y){ a=x;b=y;c=0;} D.public B(int x,int y, int z){ a=x;b=y;c=z;} 18.编译运行下面的程序,结果是()。(重要) public class A{ public static void main(String args[]){ B b=new B(); b.test(); } void test(){ System.out.print(“A”); } } class B extends A{ void test(){ super.test(); System.out.print(“B”); } } A.产生编译错误B.代码可以编译运行,并输出结果:AB C.代码可以编译运行,但没有输出 D.编译没有错误,但会产生运行时异常19.已知类关系如下: Class Employee{} Class Manager extends Employee{} Class Director extends Employee{} 则下列语句正确的是:()。 A.Employee e=new Manager();B.Director d=new Manager(); C.Director d =new Employee ();D.Manager m=new Director (); 20.接口是Java面向对象的实现机制之一,以下说法正确的是()。 A.Java支持多重继承,一个类可以实现多个接口 B.Java只支持单重继承,一个类可以实现多个接口 C.Java只支持单重继承,一个类可以实现一个接口 D.Java支持多重继承,但一个类只可以实现一个接口 21.下列方法的声明中不合法的是。 A.float area( ){…}B.void area( ){…} C.area{…}D.int area(int r){…} 22、下面哪个包是编程时不需要导入就可以直接使用的。 A.https://www.wendangku.net/doc/c09629271.html, B.https://www.wendangku.net/doc/c09629271.html,ng C.java.sql D.java.util 23、调用构造方法是在。 A.类定义时B.创建对象时 C.调用对象的方法时D.使用对象的变量时 24、在子类构造方法的哪个地方可以调用其父类的构造方法。 A.任何地方 B.构造方法的第一条语句 C.构造方法的最后一条语句 D.无法在子类构造方法中调用父类的构造方法 25、关于Java中的继承,下列说法错误的是。 A.继承是面向对象编程的核心特征,通过继承可以更有效地组织程序结构。 B.继承使得程序员可以在原有类的基础上很快设计出一个功能更强的新类,而不必从头开始,避免了工作上的重复。 C.每一次继承时,子类都会自动拥有父类的属性和方法,同时也可以加入自己的一些特性,使得它更具体、功能更强大。 D.继承一般有多重继承和单一继承两种方式,在单一继承中每一个类最多只有一个父类,而多重继承则可以有多个父类。Java中的类都采用多重继承。 26、当方法中的局部变量与成员变量同名时,必须使用下列哪一个关键字指出成员变量。 A.static B.super C.this D.new 27、什么样的方法不能被重写。 A.私有(private)方法B.最终(final)方法 C.受保护(protected)的方法D.以上都不对 28、下列有关抽象类与接口的叙述中正确的是哪一个。 A.抽象类中必须有抽象方法,接口中也必须有抽象方法 B.抽象类中可以有非抽象方法,接口中也可以有非抽象方法 C.含有抽象方法的类必须是抽象类,接口中的方法必须是抽象方法 D.抽象类中的变量定义时必须初始化,而接口中不是 29、从下列程序中你发现了几处错误。 abstract class A{ abstract void f(){}; public abstract void k(); } class B extends A{ protected void f(){ } void k(){ System.out.print("I am subclass"); } public static void main(String[] args) { A a=new A(); a.f(); a.k(); } } A.1 B.2 C.3 D.4 30、下列程序运行的结果是。 interface InterfaceA{ String s="good "; void f(); } class ClassA implements InterfaceA{ public void f(){ System.out.print(s); } } class ClassB{ void g(InterfaceA a){ a.f(); } } public class E { public static void main(String[] args) { ClassB b=new ClassB(); b.g(new ClassA()); } } A.good B.编译正确,但无运行结果C.编译错误:b.g(new ClassA()) D.以上都不对 31、下列类的声明中不合法的是。 A.class People(){…} B.class 植物{…} C.class A{…} D.public class 共有类{…} 32、能作为类的修饰符, 也能作为类成员的修饰符的是。 A.public B.extends C.Float D.static 33、试完成下述程序片段。 public class Point{ int x,y; public Point(int x,int y){ ( )=x; ( )=y; } ...... } A.Point.x Point.y B.this.x this.y C.super.x super.y D.无解 34、在JAVA 中,下列说法正确的是:。 A.一个子类可以有多个父类,一个父类也可以有多个子类 B.一个子类可以有多个父类,但一个父类只可以有一个子类 C.一个子类只可以有一个父类,但一个父类可以有多个子类 D.上述说法都不对 35、Father和Son是两个java类,下列哪一选项正确的标识出Father是Son的父类?A.class Son implements Father B.class Father implements Son C.class Father extends Son D.class Son extends Father 36、重载指的是方法具有相同的名字,但这些方法的参数必须不同。下列哪种说法不属于方法参数的不同。 A.形式参数的个数不同。B.形式参数的类型不同。 C.形式参数的名字不同。D.形式参数类型的排列顺序不同。 37、下列有关抽象类与接口的叙述中正确的是哪一个。 A.抽象类中必须有抽象方法,接口中也必须有抽象方法 B.抽象类中可以有非抽象方法,接口中也可以有非抽象方法 C.含有抽象方法的类必须是抽象类,接口中的方法必须是抽象方法 D.抽象类中的变量定义时必须初始化,而接口中不是 38、从下列程序中你发现了几处错误。 abstract class A{ abstract void f(){}; public abstract void k(); } class B extends A{ protected void f(){ } void k(){ System.out.print("I am subclass"); } public static void main(String[] args) { A a=new A(); a.f(); a.k(); } } A.1 B.2 C.3 D.4 39、关于接口的定义和实现,以下描述正确的是。 A.接口定义的方法只有定义没有实现 B.接口定义中的变量都必须写明final和static C.如果一个接口由多个类来实现,则这些类在实现该接口中的方法时采用统一的代码 D.如果一个类实现接口,则必须实现该接口中的所有方法,但方法未必申明为public 三、阅读程序题 1、写出运行结果:。 public class Computer{ String mainbord,cpu; public Computer(String s1,String s2){ mainbord=s1; cpu=s2; } public static void main(String[]args){ Computer c=new Computer("华硕","Intel"); System.out.println("mainbord:"+c.mainbord+",cpu:"+c.cpu); } } 2、写出运行结果:。 public class ExamA { private static int arr[] = new int[5]; public static void main(String args[]) { for(int i=arr.length-1;i>=0;i--) arr[i] = 2*i+1; String output = "0"; int sum = 0; for(int i=0;i sum += arr[i]; output += " + " + arr[i]; } output += " = "+sum; System.out.println(output); System.exit(0); } } 3、写出运行结果:。 public class Person{ String name; int age; public Person(String name,int age){ https://www.wendangku.net/doc/c09629271.html,=name; this.age=age; } public static void main(String[]args){ Person c=new Person("Peter",17); System.out.println(https://www.wendangku.net/doc/c09629271.html,+" is "+c.age+" years old!"); } } 4、写出运行结果:。 public class abc{ public static void main(String args[ ]) { SubSubClass x = new SubSubClass(10 , 20 , 30); x.show(); } } class SuperClass{ int a,b; SuperClass(int aa , int bb){ a=aa; b=bb; } void show( ){ System.out.println("a="+a+" b="+b); } } class SubClass extends SuperClass{ int c; SubClass(int aa,int bb,int cc){ super(aa,bb); c=cc; } } class SubSubClass extends SubClass{ int a; SubSubClass(int aa,int bb,int cc){ super(aa,bb,cc); a=aa+bb+cc; } void show(){ System.out.println("a="+a+" b="+b+" c="+c); } } 5.下面是一个类的定义,请将其补充完整 class ______{ String name; int age; Student(______ name, int a){ _____.name=name; age=a; } } 6.下面是一个类的定义,请将其补充完整 class ______{ String s; ______ int a=3; A(String s){ this.s=s; } static int getA(){ return a; } } 四、编程题 1.按要求编写一个Java应用程序: (1)定义一个接口CanCry,描述会吼叫的方法public void cry()。 (2)分别定义狗类(Dog)和猫类(Cat),实现CanCry接口。实现方法的功能分别为:打印输出“我是狗,我的叫声是汪汪汪”、“我是猫,我的叫声是喵喵喵”。 (3)定义一个主类G, ①定义一个void makeCry(CanCry c)方法,其中让会吼叫的事物吼叫。 ②在main方法中创建狗类对象(dog)、猫类对象(cat)、G类对象(g),用g调用makecry方法,让狗和猫吼叫。