zoukankan      html  css  js  c++  java
  • java中子类的继承性

    1,继承的定义

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

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

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

    方法调用。

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

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

    项目结构:

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

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

     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

     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

     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 }

    运行结果:

    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

     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

     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

     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 }

    运行结果:

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

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



     

  • 相关阅读:
    JDBC第一部分
    java mysql学习第三部分
    java mysql 第六部分
    java mysql学习第五部分
    java mysql学习第二部分
    java mysql学习第一部分
    元注解
    改良之前写的模拟栈代码
    java中如何自定义异常
    java中的语法规则
  • 原文地址:https://www.cnblogs.com/hongten/p/java_parent_son_subclass.html
Copyright © 2011-2022 走看看