基于java中子类的继承性的应用介绍
发布时间:2020-12-14 14:12:31 所属栏目:Java 来源:网络整理
导读:1,继承的定义 子类的成员中有一部分是子类自己申明定义的,另一部分是从他的父类继承的。子类继承父类的成员变量作为自己的一个成员变量,就好像他们是在子类中直接 申明一样,可以被子类中自己的任何实例方法操作。也就是说,一个子类继承的成员应当是这个
1,继承的定义 子类的成员中有一部分是子类自己申明定义的,另一部分是从他的父类继承的。子类继承父类的成员变量作为自己的一个成员变量,就好像他们是在子类中直接 申明一样,可以被子类中自己的任何实例方法操作。也就是说,一个子类继承的成员应当是这个类的完全意义的成员,如果子类中申明的实例方法不能操作父类 的某个成员变量,该成员变量就没有被子类继承,子类继承父类的方法作为子类中的方法,就像他们是在子类中直接声一样,可以被子类中自己声明的刃虎实例 方法调用。 2.子类父类在一个包中的情况 子类可以继承父类中的除了private的成员变量和方法,作为自己的成员变量和方法。继承的成员变量和方法的访问权限是不变的。 /test/src/com/b510/Parent.java 复制代码 代码如下: package com.b510; /** * @author Hongten * * @time 2012-3-13 2012 */ public class Parent { private int numbera = 10; protected int numberb = 20; /** * 友元函数sum() */ void sum() { numberb = numbera + numberb; System.out.println(numberb); } /** * 获得numbera,此方法是private * * @return numbera */ private int getNumbera() { System.out.println(numbera); return numbera; } /** * 此方法是public类型的 */ public void print() { System.out.println("numberb+numbera=" + (numberb + numbera)); } /** * 此方法是protected类型的 */ protected void say() { System.out.println("Hello,i'm parent class!"); } } /test/src/com/b510/ParentAndSubClass.java 复制代码 代码如下: package com.b510; /** * @author Hongten * * @time 2012-3-13 2012 */ public class ParentAndSubClass { public static void main(String[] args) { SubClass sub = new SubClass(); // 继承父类中的方法 sub.say(); sub.sum(); sub.print(); // 子类自己的方法 sub.proFun(); sub.youYuan(); } } /test/src/com/b510/SubClass.java 复制代码 代码如下: package com.b510; /** * @author Hongten * * @time 2012-3-13 2012 */ public class SubClass extends Parent { /** * 友元方法 */ void youYuan() { System.out.println("子类不能继承numbera,但能继承numberb=" + numberb); System.out.println("这是子类中的友元方法"); } /** * private方法 */ private void priFun() { System.out.println("这是private方法"); } /** * protected方法 */ protected void proFun() { System.out.println("子类中可以继承numberb=" + numberb); } } 运行结果: 复制代码 代码如下: Hello,i'm parent class! 30 numberb+numbera=40 子类中可以继承numberb=30 子类不能继承numbera,但能继承numberb=30 这是子类中的友元方法 总结:子类和父类在同一个包中的时候,子类不能继承父类的含有private的变量和方法。 3.子类和父类不在同一个包的情况 复制代码 代码如下: package com; /** * @author Hongten * * @time 2012-3-13 2012 */ public class Parent { private int numbera = 10; protected int numberb = 20; /** * 友元函数sum() */ void sum() { numberb = numbera + numberb; System.out.println(numberb); } /** * 获得numbera,此方法是private * * @return numbera */ private int getNumbera() { System.out.println(numbera); return numbera; } /** * 此方法是public类型的 */ public void print() { System.out.println("numberb+numbera=" + (numberb + numbera)); } /** * 此方法是protected类型的 */ protected void say() { System.out.println("Hello,i'm parent class!"); } } /test/src/com/b510/ParentAndSubClass.java 复制代码 代码如下: package com.b510; /** * @author Hongten * * @time 2012-3-13 2012 */ public class ParentAndSubClass { public static void main(String[] args) { SubClass sub = new SubClass(); // 继承父类中的方法 sub.say(); sub.print(); // 子类自己的方法 sub.proFun(); sub.youYuan(); } } /test/src/com/b510/SubClass.java 复制代码 代码如下: package com.b510; import com.Parent; /** * @author Hongten * * @time 2012-3-13 2012 */ public class SubClass extends Parent { /** * 友元方法 */ void youYuan() { System.out.println("子类不能继承numbera,但能继承numberb=" + numberb); System.out.println("这是子类中的友元方法"); } /** * private方法 */ private void priFun() { System.out.println("这是private方法"); } /** * protected方法 */ protected void proFun() { System.out.println("子类中可以继承numberb=" + numberb); } @Override protected void say() { System.out.println("这是重写父类的protected方法,say(),还可以得到numberb=" + numberb); } } 运行结果: 复制代码 代码如下: 1 这是重写父类的protected方法,say(),还可以得到numberb=20 2 numberb+numbera=30 3 子类中可以继承numberb=20 4 子类不能继承numbera,但能继承numberb=20 5 这是子类中的友元方法 总结:子类和父类不在同一个包,子类可以继承protected,public变量和方法,继承的成员或方法的访问权限不变,但子类不能继承父类的友好(友元)变量和友好(友元)方法。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |