小编yas*_*ash的帖子

方法重写


class A
{
  int i=10;
  void show()
  {
    System.out.println("class A");
  }
}

class B extends A
{
  int i=5;
  public void show()
  {
    System.out.println("class B");
  }
}
class M
{
  public static void main(String s[])
  {
    A a=new B();
    a.show();
    System.out.println(a.i);
  }
}


OUTPUT= class B
        10

Run Code Online (Sandbox Code Playgroud)

如果A类方法被B类方法覆盖那么为什么变量'i'?

java

3
推荐指数
2
解决办法
297
查看次数

方法覆盖使用Interface

    interface I
    {
       void show();
    } 

    class A implements I
    {
    void show()
    {
       System.out.println("class A");
     }
    public static void main(String s[])
    {
      I i=new A();
      i.show();
      i.toString();
    }
  }
Run Code Online (Sandbox Code Playgroud)

Q>作为接口我不包含抽象方法toString()但仍然编译以下代码.怎么样?

当超类变量用于引用子类obj时,编译器首先搜索超类中的类似方法,如果未找到则给出错误.这里接口不包含toString()方法.

EX =>

class A
{
  void show()
  {
   System.out.println("show");
  }
}

class B
{
  void show()
  {
   System.out.println("show B");
  }

  void display()
  {
   System.out.println("display B");
  }

  public static void main(String s[])
  {
    A a=new B();
    a.show();           //will execute
    a.display();        //give error 
} 
Run Code Online (Sandbox Code Playgroud)

java

0
推荐指数
1
解决办法
2307
查看次数

标签 统计

java ×2