java中的多态、static、final问题

多态的成员变量:编译和运行时期都参考等号的左边

class Fu {

    int num = 4;

}

class Zi extends Fu {

    int num = 5;

}

class Demo {

    public static void main(String[] args) {

        Fu f = new Zi();

        System.out.println(f.num); //4

        Zi z = new Zi();

        System.out.println(z.num); //5

    }

}

多态成员方法:编译看左边,运行看右边。

class Fu {

    int num = 4;

    void show() {

        System.out.println("Fu show num");

    }

}

class Zi extends Fu {

    int num = 5;

    void show() {

        System.out.println("Zi show num");

    }

}

class Demo {

    public static void main(String[] args) {

        Fu f = new Zi();

        f.show(); //Zi show num

    }

}

final

final修饰类不可以被继承,但是可以继承其他类。

引用类型的变量值为对象地址值,地址值不能更改,但是地址内的对象属性值可以修改

final Person p = new Person();

Person p2 = new Person();

p = p2; //final修饰的变量p,所记录的地址值不能改变

p.name = "小明";//可以更改p对象中name属性值

 

修饰成员变量,需要在创建对象前赋值,否则报错。

class Demo {

    //直接赋值

    final int m = 100;

    //final修饰的成员变量,需要在创建对象前赋值,否则报错。

    final int n;

    public Demo(){

        //可以在创建对象时所调用的构造方法中,为变量n赋值

        n = 2016;

    }

}

static

  1. 被static修饰的成员变量属于类,不属于这个类的某个对象。(也就是说,多个对象在访问或修改static修饰的成员变量时,其中一个对象将static成员变量值进行了修改,其他对象中的static成员变量值跟着改变,即多个对象共享同一个static成员变量
  2. class Demo {

        public static int num = 100;

    }

     

    class Test {

        public static void main(String[] args) {

            Demo d1 = new Demo();

            Demo d2 = new Demo();

            d1.num = 200;

            System.out.println(d1.num); //结果为200

            System.out.println(d2.num); //结果为200

        }

    }

接口中的static final

接口中的每个成员变量都默认使用public static final修饰。

所有接口中的成员变量已是静态常量,由于接口没有构造方法,所以必须显示赋值。可以直接用接口名访问。

interface Inter {

    public static final int COUNT = 100;

}

         访问接口中的静态变量

Inter.COUNT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值