继承访问权限

来源:互联网 发布:linux中的ll 编辑:程序博客网 时间:2024/05/16 15:01
当子类继承了某个类后,便可以使用父类中的成员变量,当并不是完全继承父类的所有成员变量,具体原则如下
变量原则:

(1)能够继承父类的public和protected变量.不能够继承父类的private变量;

package test1;class son{public int a;protected int b;int c;private int d;public son(){}}public class a extends son{@Overridepublic String toString() {// TODO Auto-generated method stubString temp = "";temp += a;temp += b;temp += c;//temp += d;   错误,private不能继承return temp;}public static void main(String[] args) {a o = new a();System.out.println(o);}}/* * 输出:000 */


(2)对于父类的包访问权限变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类就不能够继承;

package test2;import test1.son;public class b extends son{@Overridepublic String toString() {// TODO Auto-generated method stubString temp = "";temp += a;temp += b;//temp += c;  错误 包访问权限只能在同一个包内继承//temp += d;  错误 private访问权限只能在本类使用,不能继承return temp;}public static void main(String[] args) {b o = new b();System.out.println(o);}}/* * 输出:00 */

方法原则:
(1)能够继承父类的public和protected方法.不能够继承父类的private方法;
package test1;public class son {public son(){}public void fun1(){System.out.println("son.fun1()");}public static void fun1_s(){System.out.println("son.fun1_s()");}protected void fun2(){System.out.println("son.fun2()");}protected static void fun2_s(){System.out.println("son.fun2_s()");}void fun3(){System.out.println("son.fun3()");}static void fun3_s(){System.out.println("son.fun3_s()");}private void fun4(){System.out.println("son.fun4()");}private void fun4_s(){System.out.println("son.fun4_s()");}}
package test1;/** * 同一个包内 * @author ziwang * */public class a extends son{private void show() {// TODO Auto-generated method stubthis.fun1();a.fun1_s();this.fun2();a.fun2_s();this.fun3();a.fun3_s();//this.fun4(); 错误,private方法只能自己类使用,不能继承//a.fun4_s();  错误,private方法只能自己类使用,不能继承}public static void main(String[] args) {a o = new a();o.show();}}/* * 输出: *  son.fun1()son.fun1_s()son.fun2()son.fun2_s()son.fun3()son.fun3_s() */ 

(2)对于父类的包访问权限方法,如果子类和父类在用一个包下,则子类能够继承;否则,子类就不能够继承;

package test2;import test1.son;public class b extends son{private void show() {// TODO Auto-generated method stubfun1();b.fun1_s();fun2();b.fun2_s();//fun3();       错误,包访问权限只有在同一个包内才可以继承//b.fun3_s();  错误,包访问权限只有在同一个包内才可以继承//fun4();       错误,private不能继承//b.fun4_s();  错误,private不能继承}public static void main(String[] args) {b o = new b();o.show();}}/* * 输出: * son.fun1()   son.fun1_s()   son.fun2()   son.fun2_s() */

0 0
原创粉丝点击