java子类中访问父类与父接口相同的变量

参考网址:

http://bbs.csdn.net/topics/310081194

 

 

 

class A                    //定义父类
{
int num=10;
} 

interface B               //定义接口
{
int num=1;
} 

public class C extends A implements B{//子类实现了接口并继承了父类
    int num = 2;
    public static void main(String[] args){
        System.out.println("num is "+num); //这一行报错,不知道访问的num是父类中的还是接口中的
    }
}

 一,从帖子上看到的方法

class A{int num=10;}
interface B {int num=1;}
public class C extends A implements B{
    public static void main(String[] args){
        //System.out.println("num is "+A.num);
        C c=new C();
        B b=c;
        System.out.println("B's num:"+b.num); //调用B中的num
        A a=c;
        System.out.println("A's num:"+a.num); //调用A中的num
    }
}

 二,自己总结方法

接口中的变量都默认final static修饰,故可以直接用接口名访问,而父类可以用关键字super,子类本身可以用this。

下面是我自己的一个小Demo

public class Demo  extends B implements A {
	int x = 9;
	public void pX() {
		System.out.println(this.x); //访问本身的变量,如果Demo类没有定义num,则报错
		System.out.println(super.x);//访问父类中过的变量
		System.out.println(A.x);//访问父接口中过的变量,直接用类名就可以
	}
	public static void main(String[] args) {
		new Demo().pX();
	}
}

interface A {
	int x = 10;
}

class B {
	int x = 12;
}

 

你可能感兴趣的:(java)