62,616
社区成员
发帖
与我相关
我的任务
分享
public class Problem {
public static void main(String[] args) {
//创建子类对象
new extendsBase();
}
}
class Base{
public Base(){
test();
}
public void test(){
System.out.println("Base!");
}
}
//继承Base,重写test方法
class extendsBase extends Base{
@Override
public void test() {
System.out.println("Why????");
}
}
public class Problem {
public static void Main(String[] args) {
//创建子类对象
new extendsBase();
Console.ReadLine();
}
}
class Base{
public Base(){
test();
}
public virtual void test(){
Console.WriteLine("Base!");
}
}
//继承Base,重写test方法
class extendsBase : Base{
public extendsBase():base() //注意此处显示的调用父类的构造函数,但输出结果仍然是:Why????
{
}
public override void test() {
Console.WriteLine("Why????");
}
}
我们再看另一种情况,输出就是Base!:
public class Problem {
public static void Main(String[] args) {
//创建子类对象
new extendsBase();
Console.ReadLine();
}
}
class Base{
public Base(){
test();
}
public void test(){ //此处我把virtual 关键词去掉了
Console.WriteLine("Base!");
}
}
//继承Base,重写test方法
class extendsBase : Base{
public extendsBase():base()
{
}
//由于父类存在一个test方法,那么在C#中函数前面不加new关键词的话,是编译不过去的。
//这是java虚函数和C#实体函数的区别
public new void test() {
Console.WriteLine("Why????");
}
}
其实你的代码,就等同于上面第一种情况的代码是一样的!不知道能不能给你一点思路
package test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TestTime {
public static void main(String[] args) {
//创建子类对象
new extendsBase();
new Base();
}
}
class Base{
public Base(){
test();
}
public void test(){
System.out.println("Base!");
}
}
//继承Base,重写test方法
class extendsBase extends Base{
@Override
public void test() {
System.out.println("in children");
}
public extendsBase()
{
System.out.println("in children ctr");
}
}
输出结果:
in children
in children ctr
Base!