java中的继承-子类继承父类的权限问题

xiaoxiao2021-02-28  86

                                                java中的继承

        Java语言面向对象有三大特性:封装、继承、多态。其中的继承,描述了一种“is-a”的关系,可以理解为子集合和父集合。子类可以继承父类的方法、域、构造方法。但是,java中的变量都是有权限的,子类继承的时候要不要考虑呢? class A{ public int x=10; public static int y=20; public static void printstatic(){ System.out.println("这是父类的静态方法"); } public void print(){ System.out.println("这是父类的非静态方法"); } } class B extends A{ } public class Demo47 { public static void main(String[] args) { B b=new B(); b.print(); b.printstatic(); System.out.println(b.x); System.out.println(b.y); } }对于上面的一段代码,首先考虑静态和非静态的区别。 输出结果如下: 很明显,不论是静态的还是非静态的,子类都可以直接引用。 public class Demo47 { public static void main(String[] args) { B b=new B(); b.print(); b.privateprint(); b.printstatic(); System.out.println(b.x); System.out.println(b.y); System.out.println(b.z); } } class A{ public int x=10; private int z=10; public static int y=20; public static void printstatic(){ System.out.println("这是父类的静态方法"); } public void print(){ System.out.println("这是父类的非静态方法"); } private void privateprint(){ System.out.println("这是父类的非静态方法"); } } class B extends A{ }而对于上面的一段代码,则因为权限设置为了私有,编译器会直接报错。 要想得到父类中的私有化变量,就有提供可以获得变量的共有方法。 public class Demo47 { public static void main(String[] args) { B b=new B(); // b.print(); // b.printstatic(); System.out.println(b.x); System.out.println(b.y); System.out.println(b.getz()); } } class A{ public int x=10; private int z=15; public static int y=20; public static void printstatic(){ System.out.println("这是父类的静态方法"); } public void print(){ System.out.println("这是父类的非静态方法"); } private void privateprint(){ System.out.println("这是父类的非静态方法"); } protected int getz() { return z; } } class B extends A{ }向上面的一段代码,就会得到私有变量并输出以下结果:
转载请注明原文地址: https://www.6miu.com/read-26864.html

最新回复(0)