当前位置: 代码迷 >> 综合 >> 继承、重写、重载、 abstract 抽象、 final、向上(向下)转型、多态
  详细解决方案

继承、重写、重载、 abstract 抽象、 final、向上(向下)转型、多态

热度:110   发布时间:2023-11-23 00:02:22.0

继承
    父类:公共的属性和方法
    子类:特有的属性和方法
    
    重写 override:
        1、继承
        2、子类拥有和父类的一样的方法
            方法名相同
            参数列表相同
            返回值类型可以缩小
            访问控制权限可以方法
            可声明的异常。。
    重载:overload
        1个类中,方法名相同,参数列表不同
        与返回值类型,访问控制权限无关
                
        为什么用重写?
            子类不满足父类提供的实现
            实现多态
    
      父类并不要求子类必须要重写
      
     abstract 抽象的
         修饰的方法,这个方法就叫抽象方法
             没有方法体
             无法描述方法体,就可以用abstract修饰
             强制要求所有子类都要重写,否则子类就是抽象的,交由子类的子类继续重写
             抽象方法必须位于抽象类中
         修饰类,这个类就叫抽象类
             没有实例对象,不能实例化
             如果一个类没有实例对象,不允许实例化,就可以定义成抽象的。
             可以有构造方法吗?可以,有必要有,可以给子类共有的属性初始化
             抽象类中必须要有抽象方法吗?不一定,可以有0-多个抽象方法
             抽象类中可以有普通的方法吗?可以
         
         不可以修饰属性
         
     final 最终
         修饰变量,变量的值不能被修改--常量    
             初始化:1、定义时2、所有的构造方法里
             通常和static结合,定义静态常量
         修饰方法,方法不能被重写
             abstract 和 final 不能同时修饰方法
         修饰类,类不能被继承
             abstract 和final不能同时修饰类
         
     向上转型
         里氏替换原则:所有要求父类对象出现的地方,子类对象都可以替换它
         父类类型    引用=new 子类类型(); -----自动类型转换
         
         好处:
             面向父类编程,方便扩展
             更好的利用多态
         缺点:
             用不了子类特有的方法
     向下转型
         子类类型 引用=(子类类型)父类类型对象;--强制类型转换
         
          有可能引发ClassCastException
          所以向下转型之前需要先进行类型判断,通过instanceOf来实现
          A  instanceof  B  判断a对象是否是B类型的实例  如果a是B类型/B类型的子类对象,都会返回true
     
     
     
多态
    多种形态
    生活中的例子:
    人--演员  ----  cut -----停止表演
       理发师-----   cut------剪发
       
    打印机        打印
        黑白打印机 ----     黑白打印
        彩色打印机  ----   彩色打印
    
    同一种类型的对象(同一种父类引用),执行相同的方法,结果不同。
     实现:
         1、继承
         2、子类重写父类的方法
         3、向上转型  
                 父类类型    引用=new 子类类型();
                 执行过程中,引用对象会根据具体的子类类型来决定执行哪个方法
     
    多态在编程中会有以下形式:
        1、父类类型做形参 
            模拟员工回家
                Employee goHome(交通工具)
                        骑车
                        坐地铁
                        坐公交
     
         2、父类类型做属性
         3、父类类型做返回值 
     
     多态中的成员    
         方法:
             普通方法:父类类型    引用=new 子类类型();
             静态方法:不会覆盖
         属性:
             不会被覆盖的
             
     多态:
         狭义:继承-重写-向上转型----动态的多态
         广义:通过重载来实现----静态的多态
             
                 
     
     
     注:主页更多学习资料。
     
     
     
     
     
     
     
     
     
         
         
         

  相关解决方案