继承和重写

继承

什么是继承:

  •  继承是面向对象的第二个特征,提出类可以划分为父类和子类,凡是父类具备的属性或行为,子类无需再次书写,
    
  •  而是自动具备
    

为什么有继承:

  •  继承的出现既满足复用与分离的原则,又满足了设计上的开闭原则,在面向对象分析设计时,可以把共有的属性和行为
    
  •  一次性分析得到,定义在父类上,把特有的属性和行为单独设计在子类上,给带来了设计的分析方式
    

语法上如何实现继承:

  •  public class 类名   extends 父类名
    
  •  Java中每个类有且仅有一个父类————称之为“单继承”——结构层次清晰,但丰富的减弱
    
  •  有些编程语言(C++)允许一个类有多个父类————称之为“多继承”——丰富度增加,但层次结构会呈现复杂的网状
    
  •  继承关系可以进行传承,只要在一棵继承树上,超类的属性和行为会自动被派生类继承
    

什么时候用继承:

  •  在问题域中,并不是只要有共同属性和行为就能继承,而是要找到is的关系
    

内存上如何实现的继承:

  •  Java采用“内存叠加”的方式实现了继承
    
  •  Java在产生子类对象的时候,会首先调用父类的构造方法,产生父类的对象部分,
    
  •  	然后调用子类的构造方法,在父类部分的下面叠加子类特有部分,构成完整的子类对象
    

super关键字:

  •  1、super()——调用父类的指定构造方法,由于产生子类对象前会先产生父类对象部分,那么就要调用父类方法,
    
  •  			如果父类有多个构造,可以用super()调用指定构造,匹配方式是实参和形参的匹配。如果子类构造不写,
    
  •  			则默认是无参的super(),调用父类无参构造
    
  •  	特点:只能写在构造方法当中,且只能写在第一句,不写也有默认
    
  •  2、super. ——后面跟属性或行为
    
  •  			当super. 后面跟方法时,调用的是父类的该方法
    
  •  			this. 后面跟方法时,调用的是子类的该方法,若子类没有重写,this. 和  super.  效果一样
    
  •  			当super. 后面跟属性时,是调用父类中的属性
    
  •  			this. 后面跟属性,既可以调用继承的父类的,也可以调用自己的,
    
  •  			(只有父类和子类定义了同一个属性,this. 是子类的属性, super. 是父类的属性)
    
  •  访问子类中的行为和属性,一般用 this  只有一种用super. 即在子类中调用重写前的父类的实现
    

方法的重写:

  •  当子类拥有父类的某个行为,但实现是特有的,应该在父类中先定义,再子类重新实现一次,这就是方法的重写——Override
    
  •  重写后不是子类拥有两个方法,而是仍然只有一个
    

重写的规范:

  •  子类方法的方法名,参数列表(个数,顺序,类型)和返回类型必须和父类中的方法保持一致
    
  •  子类方法的访问修饰符,要么和父类保持一致,要么比父类更大
    
  •  子类方法不能比父类方法抛出更大范围的异常
    

重写和重载的关系:

  •  1、语法上的区分:重载是一个类里有多个同名方法,参数列表不同;重写是在继承关系中,把父类的方法重新实现一次
    
  •  2、场景不同:重载是一个类,重写是多个类,且这些类有继承关系
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值