1、题1:
class ExSuper{
String name;
String nick_name;
public ExSuper(String s,String t){
name = s;
nick_name = t;
}
public String toString(){
return name;
}
}
public class Example extends ExSuper{
public Example(String s,String t){
super(s,t);
}
public String toString(){
return name +"a.k.a"+nick_name;
}
public static void main(String args[]){
ExSuper a = new ExSuper("First","1st");
ExSuper b = new Example("Second","2nd");
System.out.println("a is"+a.toString());
System.out.println("b is"+b.toString());
}
}答案是:a is First
b is Secong a.k.a 2nd
这里是不是这样理解的:对子类的一个实例(ExSuper b = new Example("Second","2nd");),如果子类重写了父类的方法,则运行时系统调用子类的方法,
而一个父类的实例ExSuper a = new ExSuper("First","1st");就还是调用父类自己的方法。我选择的是:运行结果为:
a is First a.k.a 1nd
b is Second a.k.a 2nd
题二:
abstract class MineBase {
abstract void amethod();
static int i;
} public class Mine extends MineBase
{
public static void main(String argv[]){
int[] ar = new int[5];
for(i = 0;i < ar.length;i++)
System.out.println(ar[i]);
}
}
答案:编译出错, Mine应声明为abstract。
我选择的是: 打印5个0。
这个我就看不懂了。
下面是一些摘抄:
抽象类
java语言中,用abstract 关键字来修饰一个类时,这个类叫做抽象类,用abstract 关键字来修饰一个方法时,这个方法叫做抽象方法。格式如下:
abstract class abstractClass{ …} //抽象类
abstract returnType abstractMethod([paramlist]) //抽象方法 抽象类必须被继承,抽象方法必须被重写。抽象方法只需声明,无需实现;抽象类不能被实例化,抽象类不一定要包含抽象方法。若类中包含了抽象方法,则该类必须被定义为抽象类。
大家能不能告诉我是错在那里啊?
class ExSuper{
String name;
String nick_name;
public ExSuper(String s,String t){
name = s;
nick_name = t;
}
public String toString(){
return name;
}
}
public class Example extends ExSuper{
public Example(String s,String t){
super(s,t);
}
public String toString(){
return name +"a.k.a"+nick_name;
}
public static void main(String args[]){
ExSuper a = new ExSuper("First","1st");
ExSuper b = new Example("Second","2nd");
System.out.println("a is"+a.toString());
System.out.println("b is"+b.toString());
}
}答案是:a is First
b is Secong a.k.a 2nd
这里是不是这样理解的:对子类的一个实例(ExSuper b = new Example("Second","2nd");),如果子类重写了父类的方法,则运行时系统调用子类的方法,
而一个父类的实例ExSuper a = new ExSuper("First","1st");就还是调用父类自己的方法。我选择的是:运行结果为:
a is First a.k.a 1nd
b is Second a.k.a 2nd
题二:
abstract class MineBase {
abstract void amethod();
static int i;
} public class Mine extends MineBase
{
public static void main(String argv[]){
int[] ar = new int[5];
for(i = 0;i < ar.length;i++)
System.out.println(ar[i]);
}
}
答案:编译出错, Mine应声明为abstract。
我选择的是: 打印5个0。
这个我就看不懂了。
下面是一些摘抄:
抽象类
java语言中,用abstract 关键字来修饰一个类时,这个类叫做抽象类,用abstract 关键字来修饰一个方法时,这个方法叫做抽象方法。格式如下:
abstract class abstractClass{ …} //抽象类
abstract returnType abstractMethod([paramlist]) //抽象方法 抽象类必须被继承,抽象方法必须被重写。抽象方法只需声明,无需实现;抽象类不能被实例化,抽象类不一定要包含抽象方法。若类中包含了抽象方法,则该类必须被定义为抽象类。
大家能不能告诉我是错在那里啊?
2。抽象类被继承之后,则子类也继承父类的抽象方法,如果没有override的话,那么子类也是抽象类,你这里没有override,那么子类必须声明位abstract
而子类继承父类必将继承父类的所有方法,包括抽象方法
所以子类没有override父类的抽象方法(definition)的话,那么子类也是包含抽象方法的
所以子类也只能声明为抽象类了