如文章标题,今天兔C残篇阐述的话题如下:
1.什么是继承
1.1 democode1.2 关于继承的理论知识概念 2、Super 关键字3.this 关键字4.this 和 super 的区别4.方法重写 1.什么是继承
继承是面向对象的三大特性之一,本质上是对某一批类的抽象,从而实现对现实世界更好的建模。
在使用继承的时候,我们使用extends 关键字,extends关键字的意思是:扩展,子类是父类的扩展。
//这里我们写一个person类public class Person{ public String name; //人的姓名 public int age; //人的年龄 Object 类是所有类的祖宗,当我们创建一个类的时候,它会隐含的默认继承Object类 这里我们使用public权限修饰,子类在继承这个父类的时候,就可以调用到父类的属性 //我们的Java 是单继承的,没有多继承! //我们在下面知识模块中使用extends 实现继承}
1.2 关于继承的理论知识概念Java 是单继承,没有多继承。当一个类没有明确指定继承类的时候,会默认的继承Object类继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖,组合,聚合等继承关系的两个类,一个类为子类(派生类),一个为父类(基类),子类继承父类,使用extends关键字实现子类和父类之间,从意义上讲应该具有 “is a” 的关系 2、Super 关键字
public class Student extends Person{ super.name; super.age; //在这里我们可以使用 super 关键字调用到父类的属性。 如果调用当前类的属性,我们使用this关键字。 如果是调用方法的话,也可以使用这两个关键字。与属性相同, 调用父类的就使用super,调用当前类的就使用this关键字。 如果调用构造方法的话,可以使用this();,父类的构造方法使用super();。 构造器我们要妥善使用,在定义构造器的时候,如果定义了有参构造, 那一定要定义无参构造,不然在调用的时候,没法调用到无参构造。 (因为无参构造是默认创建的,当我们显示的创建有参构造的时候, 无参的构造就不再自己默认隐含创建了,所以需要自己创建好无参构造器) 而且有参构造也要妥善使用,不然参数定义过多的时候,调用起来容易出现顺序错误, 导致出现问题。 这个意思就说,比如你定义了八个参数的无参构造 参数列表,那自己调用的时候, 忘记了参数定义的顺序,然后进行传参或者说,参数设置时,因为忘记了导致参数 传递有误,所以很容易出现问题。 而且还有一个特点,我要说明,在子类的构造方法中,它会 隐含的默认 写上一句代码 super();调用父类的无参构造,这时候就没法使用 this(); 调用自己类的,不然会 报错,也就是说,在构造方法中,只能使用super();因为这是默认调用的,不写也会 有一句隐含的代码。当然了,如果指定调用有参构造,就不用调用无参构造器了。}
3.this 关键字this关键字的含义就是代表当前的
4.this 和 super 的区别
super
super 调用父类的构造方法,必须在构造方法的第一个super 必须只能出现在子类的方法或者构造方法中super 和 this 不能同时调用构造方法this
代表的对象不同
this 本身调用者这个对象
super 代表父类对象的引用
前提
this 没有继承也可以使用
super 只能在继承条件下才可以使用
构造方法
this(); 本类的构造
super(); 父类的构造
4.方法重写需要有继承关系,子类重写父类的方法!
方法名必须相同参数列表必须相同修饰符:访问可以扩大但是不能缩小: public > protected > default > privatepublic 本类,本包,子类,其他包protected 可以在本类,本包下的其他类,本包下的子类 ,访问default 可以在本类,本包下private 只能在本类中访问 抛处的异常: 范围,可以被缩小,但不能扩大:classnotfoundexception —> Exception(大)
小结:
其实重写很好理解,我们不看上面必须满足的硬性条件来白话理解一下,其实就是我们写一个类,然后继承了另一个类,本来继承这个类的目的可能就是想用他的某个方法,但是之后才发现,想要用的哪个方法其实并不能完全满足我们使用它的目的,需要改进。于是乎,就重写了父类的方法,只要改变方法体中的逻辑就可以完成目标了。所以重写的特点也只是方法体中的变化。