1.调用接口和父类中的变量问题
interface A {
String str="this is A";
}
class B {
String str="this is B";
}
/*补充(1)(2)的代码使结果输出为:
* this is A
* this is B
*/
class C extends B implements A{
public void pX(){
//(1)--------
System.out.println(A.str);
//(2)--------
System.out.println(super.str);
//相当于System.out.println(new B().str);
}
public static void main(String[] args){
new C().pX();
}
}
说明:接口中的变量应该是赋值了的常量,接口中的常量默认修饰符是public static final,所以调用接口中的常量是使用 接口名.常量名。而子类调用父类中的变量时就直接使用super.变量名,相当于new 父类().变量名。
2.调用内部类中的变量和方法
/*
* 在(1)(2)(3)处填空使得程序的输出结果为:
* this is inner
* this is outer
*/
public class Outer {
private String str="this is outer";
class Inner{
String str = "this is inner";
void inner_f1(){
//(1)---------
System.out.println(str); //str相当于内部类里的全局变量
//(2)---------
System.out.println(new Outer().str); //调用另个类的非静态变量
}
}
public static void main(String[] args){
Outer out = new Outer();
//(3)-----------
Inner inner = out.new Inner();//new内部类对象之前new个外部类对象
inner.inner_f1(); //调用内部类中的方法,new对象要在外部类的基础上
}
}
3.抽象类的写法问题
abstract class Name {
private String name;
public abstract boolean isStupidName(String name){
System.out.println("abstract method");
}
}
abstract class Name {
String name;//抽象类中的变量若为 private,则这个变量不会被用到
public abstract boolean isStupidName(String name);//抽象方法不能有方法体,即实现的方法
}
说明:抽象类中可以有抽象的方法和实现的方法,抽象的方法不能有方法体,即{}。
//抽象类中可以有实现的方法
abstract class Name {
String name;
public boolean isStupidName(String name) {
return false;
}
}
4.java中定义一维和二维数组问题
//初始化String型的数组
String[] str={"a","b","c"};
String str1[]={"a","b","c"};
说明:以上两种初始化String型的数组都是正确的。注意的是,{}内的数据是使用""而不是''(数组中是String类型不是char型),各个值之间使用逗号。初始化赋值时定义的变量不能为String[3] str和String str1[]。
//初始化二维数组时
float f[][] = new float[5][5];
float []f[] = new float[5][5];
float [][]f = new float[5][5];
float f[][] = new float[5][];
float f[][] = new float[][5]; //这个是错误的,初始化时必须指定二维数组的行数