Java基础第七天

继承

继承的定义

 继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。另外,为子类别追加新的属性和方法也是常见的做法。 一般静态的面向对象编程语言,继承属于静态的,意即在子类别的行为在编译期就已经决定,无法在执行期扩充。

Java语言里面的继承

从某种意义上来说,继承可以是使得代码得到很好的复用,通过继承可以重写父类的方法,同时也可以扩展子类的行为(专业术语是:扩展子类,重写子类[父类])
Java语言里面可以通过extends关键字实现子类继承父类,比如
public class A extends B{


}
重写父类的方法应该注意的事项(两同,两小,一大):
两同:
   1、子类的方法和父类的方法的方法名一定要相同
   2、子类的方法的参数列表必须和父类的参数列表完全一样
两小:
  1、子类的方法的返回值类型必须小于或者等于父类的方法的返回值类型
  2、子类的方法的抛出的异常必须小于或者等于父类抛出的异常的类型
一大:
  子类的方法的权限修饰符必须大于或者等于父类的方法的权限修饰符
  方法的重写和重载的区别:
重载:
发生在同一个类中
相同的方法名
参数列表不同
不看返回值,如果出现了只有返回值不同的“重载”,是错的。
重写:
发生在子类和父类中
相同的方法名
返回值相同 或者 子类方法的返回值是父类方法返回值类型的子类
访问修饰符相同 或者 子类方法的修饰符范围 大于 父类
抛出的异常相同 或者 子类方法抛出的异常 小于父类
方法的重写和重载的总结:
  方法的重写是发生在子类和父类中,重写与返回值类型,方法的修饰符,方法抛出的异常类型有关系,而对于方法的重载只关心方法名和参数表,方法名相同但是参数列表不同的方法叫做方法的重载,并且方法的重载只能在同一个类里面发生,与方法的修饰符,返回值类型无关。
  super关键字的使用:
  1、super关键字使用在子类可以表示调用父类的构造器
  2、super关键字使用在子类的实例里面通过super.父类的实例方法名调用父类的方法。

多态

一个父类的拥有多个子类的表现叫做多态;
我们可以把同一个类拥有不同的子类的这个过程叫做多态,
* 也就是,一个类拥有多个子类的表现形式,具体功能
* 主要是看子类,因为子类重写了父类的方法,父类的
* 不同子类所重写的父类的方法的逻辑不一样导致,方法的
* 运行结果不一样,运行结果不一样就表示该类的子类对象
* 可以扮演不同的角色,这就是多态的运用。
*/

上转型对象
把子类对象赋值给父类的引用,这样的对象叫做
     * 上转型对象,虽然引用类型是父类类型,但是
     * 在调用方法的时候仍然执行的是重写之后的方法
     * 也就是子类的方法  

注意: 封装和继承在抽类的时候应该满足的关系,
封装满足 has a 关系(表示 有一个xxxx的属性),继承满足 is a的关系
(表示 是一个xxx的父类)
  
  比如有一个Student类,有姓名,性别,年龄等这些属性都是合法的,但是
  如果在学生类里面新增一个属性叫做:大猪蹄子(就不合法了,不满面向对象的研究范畴),所以说,封装一定要满足has a
对于继承的关系,应该满足 is a 关系,比如说:
Student is a PrimaryStudent
Student is a MiddleStudent
Student is a CollegeStudent
但是我说:
Student is a Pig(不满足 is a关系)

对象数组:
什么是对象数组:对象数组就是数组里面的每一个元素都是引用类型的数据,比如:
Student[] sts={new PrimaryStudent();new MiddelStudent(),new CollegeStudent()};

发布了31 篇原创文章 · 获赞 12 · 访问量 4117

猜你喜欢

转载自blog.csdn.net/qq_21098263/article/details/104405825