码迷,mamicode.com
首页 > 编程语言 > 详细

java基础学习笔记-继承

时间:2015-07-07 18:36:22      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

  继承是复用程序代码的有力手段,当多个类(Sub1,Sub2,...Sub100)之间存在相同的属性和方法时,可从这些类中抽象出父类Base。在父类Base中定义这些相同的属性和方法,所有的Sub类无须重新定义这些属性和方法,而只需要通过extends语句来声明继承Base类:

                    public class Sub extends Base {...}

  Sub 类就会自动拥有在Base类中定义的属性和方法。

6.1 继承的基本语法

  在JAVA语言中,用extends 关键字来表示一个类继承了另一个类,例如:

                public class sub extends Base{
                                  ...
                 }            

   以上代码表明Sub类继承了Base类。那么类到底继承了Base类的哪些东西呢?这需要分为以下两种情况。

  •    当 Sub类和Base类位于同一个包中:Sub类继承Base类中public、protected和默认访问级别的成员变量和成员方法。
  •    当 Sub类和Base类位于不同的包中:Sub类继承Base类中public和protected访问级别的成员变量和成员方法。

   假定Sub和Base类位于同一个包中,以下程序演示在Sub类中可继承Base类的哪些成员变量和方法。

        public   class Base {
                 public int publicVarOfBase=1;           //public 访问级别
                      private int privateVarOfBase=1;    //public 访问级别
                      int defaultVarOfBase=1;            //默认访问级别
                 protected void methodOfBase() {}        //protected 访问级别
            }      
        public class Sub extends Base{
                 public void methodOfBase(){
                      publicVarOfBase=2;    //合法,可以访问Base类的public类型的变量
                      defaultVarOfBase=2;   //合法,可以Base类的默认访问级别的变量
                      privateVarOfBase=2;   //非法,不能访问Base类的private类型的变量
                      methodOfBase();       //合法,可以访问Base类的protected类型的方法
       }
        public static void mian (String args[]){
                      Sub sub=new Sub();
                      Sub.publicVarOfBase=3;    //合法,Sub类继承了Base类的public类型的变量
                      Sub.privateVarOfBase=3;   //非法,Sub类不能继承Base类的private类型的变量
                      Sub.defaultVarOfBase=3;    //合法,Sub类继承了Base类的默认访问级别的变量
                      Sub.methodOfBase();       //合法,Sub类继承了Base类的protected类型的方法
                      Sub.methodOfSub();       //合法,这是Sub类本身的实例方法
      }
 
}

      Java语言不支持多继承,即一个类只能直接继承一个类。例如以下代码会导致编译错误。

          class Sub extends Base1,Base2,Base3(...)

       尽管一个类只能一个直接父类,但是它可以有多个间接的父类,例如以下代码表明Base1 类继承Base2类,Sub类继承Base1类,Base2类是Sub类的间接父类。

                class Base1 extends Base2{...}
                class Sub extends Base1{...}

      所以的Java 类都直接或间接地继承了java.lang.Object 类。

6.2    方法重载(Overload)

    对于类的方法(包括从父类中继承的方法),如果有两个方法的方法名相同,但参数不一致,那么可以说,一个方法是另一个的重载方法。

    重载方法必须满足以下条件:

  •     方法名相同。
  •       方法的参数类型、人数、顺序至少有一项不相同。
  •   方法的返回类型可以不相同。
  •   方法的修饰符可以不相同。

    在一个类中不允许定义两个方法名相同,并且参数签名也完全相同的方法。因为假如存在这样的两个方法,Java虚拟机在运行时就无法决定到底执行哪个方法。参数签名是指参数的类型、个数和顺序。

java基础学习笔记-继承

标签:

原文地址:http://www.cnblogs.com/niche/p/4626541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!