java中的子类_java中子类的继承性

1,继承的定义

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

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

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

方法调用。

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

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

项目结构:

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

1 package com.b510;

2

3 /**4 *@authorHongten5 *6 * @time 2012-3-13 20127 */

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,此方法是private22 *23 *@returnnumbera24 */

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

1 package com.b510;

2

3 /**4 *@authorHongten5 *6 * @time 2012-3-13 20127 */

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

1 package com.b510;

2

3 /**4 *@authorHongten5 *6 * @time 2012-3-13 20127 */

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 }

运行结果:

1 Hello,i'm parent class!

2 30

3 numberb+numbera=40

4 子类中可以继承numberb=30

5 子类不能继承numbera,但能继承numberb=30

6 这是子类中的友元方法

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

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

项目结构:

/test/src/com/Parent.java

1 package com;

2

3 /**4 *@authorHongten5 *6 * @time 2012-3-13 20127 */

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,此方法是private22 *23 *@returnnumbera24 */

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

1 package com.b510;

2

3 /**4 *@authorHongten5 *6 * @time 2012-3-13 20127 */

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

1 package com.b510;

2

3 import com.Parent;

4

5 /**6 *@authorHongten7 *8 * @time 2012-3-13 20129 */

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 }

运行结果:

1 这是重写父类的protected方法,say(),还可以得到numberb=20

2 numberb+numbera=30

3 子类中可以继承numberb=20

4 子类不能继承numbera,但能继承numberb=20

5 这是子类中的友元方法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值