继承

一:继承(子类与父类是is-a关系)
为什么:方便修改代码
             减少代码量
概念: 类是对象的抽象,继承是某一批类的抽象
            extends是扩展的意思,子类是父类的扩展
          (超类,父类)(子类,基类)
使用:
    编写父类:
    class Pet{
                                 //公共的属性和方法
                               }             
                class Dog{
                            //子类的特有属性和方法
                                }
    编写子类:
               class Penguin extends Pet{              //只能继承一个父类                            
                                                       }
    步骤:
        使用extends
                                父类的属性和方法在子类中可以被使用(非私有属性和方法)
                                java中继承是单继承(如果包含多个父类,同时父类中包含多个重名方法无法决定调用谁)


二:super是直接父类对象的引用
                                           (1)可以通过super访问父类中被子类覆盖的方法和属性
                                               (2)super在普通方法使用:没有顺序限制
                                                         super在构造方法使用:若构造方法第一行 ,没有super,java会默认调用super()作为父类的初始化函数
                                               会调用父类的构造方法,只能写在第一行
                              (3)在构造方法中super与this两个关键词不能同时出现
                                   ********(4)父类的私有属性不能被调用包括『父类的构造方法』

PS:new一个子类的对象,最先初始化的是父类的属性和方法,然后再是子类的属性和方法。
        所以子类的构造方法里会调用父类的构造方法,注意是super实现的调用而不是继承
       并且super可以在子类的普通方法里调用父类的属性和方法。
注意点:不能直接访问private成员

PSPSPSPPSPSPPS总结:创建子类对象的时候一定会优先创建父类对象
(但别妄想直接用父类引用父类的方法,因为你根本不知道父类创建的对象叫什么名字)
                                        所有类都具备一个老祖宗,就是Object,叫类根,但一个类没有继承父类,他就会自动继承类 根
                                      (小问题:但继承了一个父类,是否会通过接口在继承类根,不然里面的工具lang包如何实现)


三:重写(可继承的方法能被重写,因此父类的private方法不能被重写)
 在子类根据需要对从基类中继承的来的方法进行重写(子类重写父类方法)
重写方法(必须)和被重写方法具有相同的方法名称,参数列表和返回值(子类和父类的方法除了方法体,其他必须一样)
重写方法不能使用比被重写方法更严格的访问权限(子类的方法比父类方法有更大或者等于的访问权限)(这是由于多态原因)
 PS:父类的静态方法子类可以进行调用,但是不可以重写
步骤 1父子类定义同名同参方法(子方法的访问权限大或等,返回值小或等)
        2子类方法会被对象先执行,在子类方法super.方法名引用 

四:抽象类(像一些父类实例化没有意义 在class前加abstract 限制实例化)不能new
                 子类在继承父类的时候,必须将父类的抽象方法进行实现或者子类也可以定义为抽象类
       抽象方法
       没有方法体,抽象方法必须在抽象类,抽象方法必须在子类实现,除非子类也是抽象类
PS:有抽象方法的一定是抽象类,抽象类可以没有抽象方法。

五:final
final类不能继承
final方法不能重写(父类的静态方法也不能被重写,但是它可以被调用)
final值:就是常量了,不可以改变


              

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值