继承

自定义一个工具类(加入文档注释 javadoc -d 目录名 -author -version XXX.java)--->API文档说明书

)将这个类的无参构造方法私有化,目的:外界不能创建对象了
2)将这个类中的所有的功能,全部静态static修饰
   工具类名.方法名() ;

子类继承父类,只能继承父类非私有的成员,私有的成员只能间接通过公共方法访问

在Java语言中,类与类之间,只支持单继承,不支持多继承!

继承的特点:
    
        1)在Java中,类与类之间的继承关系,只支持单继承,不支持多继承!
                在别的语言中,可能支持多继承,class 子类名 extends 父类名1,父类名2,..{}
                
        2)在Java中,类与类之间虽然不能 多继承,但是可以 多层继承!    

在继承中,成员变量访问问题!
    
    1)子类继承父类,如果子类的成员变量名称和父类的成员变量名称不一致的情况:
                    比较简单,分别访问即可
                    
    2)子类继承父类,如果子类的成员变量名称和父类的成员变量名

目录自定义一个工具类(加入文档注释 javadoc -d 目录名 -author -version XXX.java)--->API文档说明书


名称一致的情况:    
            
            a)现在本类的局部位置找,有没有这个变量,如果有就直接使用
            b)如果本类的局部位置没有,在本类的成员位置中找,如果有,就使用
            c)如果本类的成员位置没有,在它的父类的成员位置找,如果有,就使用
            d)父类的成员位置都没有这个变量,压根不存在,就报错!

            
            
    遵循一个原则:"就近原则"    

继承关系中,构造方法的访问
    
    子类继承父类,不能够继承构造方法,但是可以通过super()(等会讲)间接访问父类的构造方法,让父类先进行初始化

    子类的所有构造方法都默认访问父类的无参构造方法:子类的每一个构造方法的第一句话:super();
    
        super:代表的是父类的空间标识(代表父类的对象的地址值引用)
    
    为什么要去让父类初始化呢?
        
        因为子类继承父类,
            可能会使用到父类的数据!所有必须先让父类初始化,然后子类在初始化(分层初始化)
        
        
        在写父类的时候:在继承中由于存在默认的访问问题,建议永远给出父类的无参构造方法

1) 继承中的分层初始化
            子类继承父类
                Zi zi = new Zi() ;-- 子类的构造方法:  class Zi extends Fu{} 
                需要让父类先初始化----先执行父类构造方法,然后才是子类的构造方法!
                
                
        2)
    继承关系中,成员变量访问问题 :如果子类继承父类,成员变量名称都一致, 就近原则
        需要现在子类的局部位置找,有就使用
        没有,在子类的成员位置找,有就使用
        没有,在父类的成员位置找,有就使用
        
    this和super的区别
        this:代表的本类对象的地址值引用
        super:代表的父类空间标识(父类对象的地址值引用)
        
        this.变量:访问的本类的成员变量
        this.方法名():访问的本类的成员方法
        this()/this(xx):访问本类的无参构造方法/访问的本类的有参构造方法
        
        super.变量名:访问的是父类的成员变量
        super.方法名():访问的父类的成员方法
        super()/super(xx):访问的父类的无参构造方法/访问的父类的有参构造方法

方法重载overLoad和方法重写override的区别?
 *方法重载:定义方法的时候,如果多个方法的方法名相同,参数列表不同,与返回值无关
 *                  参数列表不同:
 *                              参数个数不同
 *                              参数类型不同
 *
 *                   public boolean compare(int a,int b){}
 *                   public boolean compare(float a,float b){}
 *
 *
 *  方法重写:override:
 *      子类继承父类,出现了和父类一模一样的方法声明(权限,返回值,方法名,参数列表都相同),方法覆盖
 *                  为了将父类的功能覆盖掉,使用自己的功能!

final:最终的,无法更改的
 *  可以修饰类,该类不能被继承
 * ,可以修饰变量,此时这个变量是一个常量:自定义常量
 *          此时这个变量只能被赋值一次,再次赋值,报错!
 * 可以修饰方法,
 *          此时这个方法不能被重写!

继承的中的另一个注意事项
 *          不要为了使用部分功能,而使用继承!

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值