继承


extends继承
1.Java继承的关键字是: extends
2.public class子类名extends父类名{..}
3.Java中类的继承只能是单继承(单根继承) ,即一个类只能继承-个父类,但是一个类可以由多个类来继承
它。
4.super关键字来访问父类的成员
5.super只能出现在子类的方法和构造方法中
6.super调用构造方法时,只能是第一-句
7.super不能访问父类的private成员
重写
1.方法名、参数、返回值相同
2.存在于父类和子类之间
3.子类方法不能缩小父类方法的访问权限
方法的重写:
1、在子类中可以根据需要对从基类中继承来的方法进行重写。
2、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。(注:返回值可以为父类中返回值的子类型.参数若为子类,则不是重写是重载)
3、重写方法不能使用比被重写的方法更严格的访问权限。
4. 重写方法不能声明抛出比被重写方法范围更大的异常类型。
this(...) 调用本类的构造方法
super(...) 调用父类的构造方法
super(…)或者this(….)必须出现在构造方法的第一条语句上

继承的特性:
1.提高了代码的重用性,子类继承父类所有的方法和属性,所以子类不用再重复定义
2.提高了代码的可扩展性,子类可以写自己独特的属性和方法,在父类的基础上进行扩展

继承的用法:
1.子类继承父类所有属性和方法,只不过只能调用父类的非private属性和方法
2.Java中的继承只支持单继承,意思是一个子类只能继承一个父类,但允许多层继承

父类的构造函数是不能够被继承,但可以被子类默认调用

不能够被子类继承的3种形式:
1.父类用私有属性进行修饰不可被继承
2.子类与父类不在同包(属性默认修饰public),使用默认访问权限的成员不可被继承
3.父类的构造函数不可被继承,而是默认进行调用

super关键字
1.super()指的是父类的构造函数的对象
2.调用父类中构造函数,一定发生了继承
3.调用父类里面的构造函数,那么你的super一定在你的子类的构造函数中并且在第一句

this和super的区别
1.在同一个上下文里,this 和 super 都是同一个对象的引用,也就是说指向同一个地址,
区别在于,this 的类型是子类,而 super 的类型是父类。
2.在访问父类非 private 成员的时候,获取到的值都是一样的,因为访问的都是内存里的同一个位置。
3.而当在访问父类非 private 的方法(被子类覆盖的方法)的时候,this 会访问子类的方法,而 super 会访问父类的方法
子类的构造函数如果要引用super的话,必须把super放在函数的首位
4.this:代表当前对象名,this一般来指当前对象,如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名
5.super:指引用当前对象的直接父类中的成员

重写和重载区别
方法的重写:一定发生了继承,方法的方法名,返回值类型,参数都要和父类一模一样
方法的重载:构造函数没有返回值,且他的方法名和类型要一致,参数不同(参数的个数和参数的类型)
①重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。
②覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。
重写(覆盖)是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系
重写(覆盖)只能由一个方法或只能由一对方法产生关系;重载是多个方法之间的关系
重写(覆盖)要求参数列表相同;重载要求参数列表不同。

原文地址:https://www.cnblogs.com/lei1121/p/11714514.html