前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java中子类的继承性

java中子类的继承性

作者头像
Hongten
发布2018-09-13 16:49:35
6590
发布2018-09-13 16:49:35
举报
文章被收录于专栏:HongtenHongten

1,继承的定义

子类的成员中有一部分是子类自己申明定义的,另一部分是从他的父类继承的。子类继承父类的成员变量作为自己的一个成员变量,就好像他们是在子类中直接

申明一样,可以被子类中自己的任何实例方法操作。也就是说,一个子类继承的成员应当是这个类的完全意义的成员,如果子类中申明的实例方法不能操作父类

的某个成员变量,该成员变量就没有被子类继承,子类继承父类的方法作为子类中的方法,就像他们是在子类中直接声一样,可以被子类中自己声明的刃虎实例

方法调用。

2.子类父类在一个包中的情况

子类可以继承父类中的除了private的成员变量和方法,作为自己的成员变量和方法。继承的成员变量和方法的访问权限是不变的。

项目结构:

http://www.cnblogs.com/hongten/gallery/image/112682.html

/test/src/com/b510/Parent.java

代码语言:javascript
复制
 1 package com.b510;
 2 
 3 /**
 4  * @author Hongten
 5  * 
 6  * @time 2012-3-13 2012
 7  */
 8 public class Parent {
 9     private int numbera = 10;
10     protected int numberb = 20;
11 
12     /**
13      * 友元函数sum()
14 */
15     void sum() {
16         numberb = numbera + numberb;
17         System.out.println(numberb);
18     }
19 
20     /**
21      * 获得numbera,此方法是private
22      * 
23      * @return numbera
24 */
25     private int getNumbera() {
26         System.out.println(numbera);
27         return numbera;
28     }
29 
30     /**
31      * 此方法是public类型的
32 */
33     public void print() {
34         System.out.println("numberb+numbera=" + (numberb + numbera));
35     }
36 
37     /**
38      * 此方法是protected类型的
39 */
40     protected void say() {
41         System.out.println("Hello,i'm parent class!");
42     }
43 }

/test/src/com/b510/ParentAndSubClass.java

代码语言:javascript
复制
 1 package com.b510;
 2 
 3 /**
 4  * @author Hongten
 5  * 
 6  * @time 2012-3-13 2012
 7  */
 8 public class ParentAndSubClass {
 9     public static void main(String[] args) {
10         SubClass sub = new SubClass();
11         // 继承父类中的方法
12         sub.say();
13         sub.sum();
14         sub.print();
15         // 子类自己的方法
16         sub.proFun();
17         sub.youYuan();
18     }
19 
20 }

/test/src/com/b510/SubClass.java

代码语言:javascript
复制
 1 package com.b510;
 2 
 3 /**
 4  * @author Hongten
 5  * 
 6  * @time 2012-3-13 2012
 7  */
 8 public class SubClass extends Parent {
 9 
10     /**
11      * 友元方法
12 */
13     void youYuan() {
14         System.out.println("子类不能继承numbera,但能继承numberb=" + numberb);
15         System.out.println("这是子类中的友元方法");
16     }
17 
18     /**
19      * private方法
20 */
21     private void priFun() {
22         System.out.println("这是private方法");
23     }
24 
25     /**
26      * protected方法
27 */
28     protected void proFun() {
29         System.out.println("子类中可以继承numberb=" + numberb);
30     }
31 
32 }

运行结果:

代码语言:javascript
复制
1 Hello,i'm parent class!
2 30
3 numberb+numbera=40
4 子类中可以继承numberb=30
5 子类不能继承numbera,但能继承numberb=30
6 这是子类中的友元方法

总结:子类和父类在同一个包中的时候,子类不能继承父类的含有private的变量和方法。

3.子类和父类不在同一个包的情况

项目结构:

http://www.cnblogs.com/hongten/gallery/image/112683.html

/test/src/com/Parent.java

代码语言:javascript
复制
 1 package com;
 2 
 3 /**
 4  * @author Hongten
 5  * 
 6  * @time 2012-3-13 2012
 7  */
 8 public class Parent {
 9     private int numbera = 10;
10     protected int numberb = 20;
11 
12     /**
13      * 友元函数sum()
14 */
15     void sum() {
16         numberb = numbera + numberb;
17         System.out.println(numberb);
18     }
19 
20     /**
21      * 获得numbera,此方法是private
22      * 
23      * @return numbera
24 */
25     private int getNumbera() {
26         System.out.println(numbera);
27         return numbera;
28     }
29 
30     /**
31      * 此方法是public类型的
32 */
33     public void print() {
34         System.out.println("numberb+numbera=" + (numberb + numbera));
35     }
36 
37     /**
38      * 此方法是protected类型的
39 */
40     protected void say() {
41         System.out.println("Hello,i'm parent class!");
42     }
43 }

/test/src/com/b510/ParentAndSubClass.java

代码语言:javascript
复制
 1 package com.b510;
 2 
 3 /**
 4  * @author Hongten
 5  * 
 6  * @time 2012-3-13 2012
 7  */
 8 public class ParentAndSubClass {
 9     public static void main(String[] args) {
10         SubClass sub = new SubClass();
11         // 继承父类中的方法
12         sub.say();
13         sub.print();
14         // 子类自己的方法
15         sub.proFun();
16         sub.youYuan();
17     }
18 
19 }

/test/src/com/b510/SubClass.java

代码语言:javascript
复制
 1 package com.b510;
 2 
 3 import com.Parent;
 4 
 5 /**
 6  * @author Hongten
 7  * 
 8  * @time 2012-3-13 2012
 9  */
10 public class SubClass extends Parent {
11 
12     /**
13      * 友元方法
14 */
15     void youYuan() {
16         System.out.println("子类不能继承numbera,但能继承numberb=" + numberb);
17         System.out.println("这是子类中的友元方法");
18     }
19 
20     /**
21      * private方法
22 */
23     private void priFun() {
24         System.out.println("这是private方法");
25     }
26 
27     /**
28      * protected方法
29 */
30     protected void proFun() {
31         System.out.println("子类中可以继承numberb=" + numberb);
32     }
33 
34     @Override
35     protected void say() {
36         System.out.println("这是重写父类的protected方法,say(),还可以得到numberb=" + numberb);
37     }
38 }

运行结果:

代码语言:javascript
复制
1 这是重写父类的protected方法,say(),还可以得到numberb=20
2 numberb+numbera=30
3 子类中可以继承numberb=20
4 子类不能继承numbera,但能继承numberb=20
5 这是子类中的友元方法

总结:子类和父类不在同一个包,子类可以继承protected,public变量和方法,继承的成员或方法的访问权限不变,但子类不能继承父类的友好(友元)变量和友好(友元)方法。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-03-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档