记录生活中的点点滴滴

0%

进阶4

方法覆盖:overrride ,overwriter

 1.什么时候方法需要重写?

  如果父类中的方法已经无法满足当前子类的业务要求,需要将父类的方法进行重写

 2.子类如果重写父类中的方法之后,子类对象一定调用的是重写之后的方法。

 3.发生方法覆盖的条件:

  第一:发生在具有继承关系的两个类之间

  第二:必须具有相同的方法名,相同的返回值类型,相同的参数列表

  第三:重写的方法不能比被重写的方法拥有更低的访问权限

  第四:重写的方法不能比被重写的方法抛出更宽泛的异常

  第五:私有的方法不能被覆盖

  第六:构造方法无法被覆盖,因为构造方法无法被继承

  第七:静态的方法不存在覆盖

    (静态方法执行和对象无关)

  第八:覆盖指的是成员方法,和成员变量无关

 4.继承的基本作用:代码复用。继承最重要的作用:方法重写

 关于java语言中向上转型和向下转型

  1.向上转型(upcasting): 子 –> 父

  2.向下转型(downcasting):父 –> 子

注意:无论是向上转型还是向下转型,两个类之间必须有继承关系

多态作用:使用多态可以使代码之间的耦合度降低

     项目扩展能力增强
耦合度:代码和代码之间的关联程度

super

 1.super不是引用类型,super中存储的不是内存地址,super指向的不是父类对象

 2.super代表的是当前子类对象中的父类型特征

 3.什么时候使用super?

  子类和父类中都有某个数据,例如,子类和父类中都有name这个属性

  如果要在访问子类中父类中的属性,需要使用super

 4.super可以用在什么地方?

  成员方法

  构造方法

super关键字用在构造方法中:
语法:super(实参);
作用:通过子类的构造方法去调用父类的构造方法

语法规则:一个构造方法第一行如果没有this(…),也没有显示的去调用super(…);

     系统会默认调用super();
注意:super(…)的调用只能方在构造方法的第一行
super(…)和this(…)不能共存

通过子类的构造方法去调用父类的构造方法:作用是:给当前子类对象中的父类型特征赋值。

如何定义抽象类?

  • class关键字前abstract

  • 抽象类无法实例化

  • 虽然抽象类没有办法实例化,但是抽象类也有构造方法,该构造方法是给子类创建对象的用的

  • 抽象类中可以定义抽象方法:

  • 抽象方法的语法:在方法的修饰列表中添加abstract关键字,并且抽象方法应该以“;”结束,不能带有“{}”

  • 例如:public abstract void m();

  • 5.抽象类中不一定有抽象方法,但抽像方法所在的类必须是抽象类

  • 一个非抽象的类继承抽象类,必须将抽象类中的抽象方法覆盖,实现,重写。

    抽像类不能被final修饰
    抽象方法不能被final修饰

final修饰的类无法被继承
final修饰的方法无法被重写
final修饰的局部变量一旦赋值不可再改变
final修饰的成员变量需要手动赋值
final修饰的成员变量和static联用称为常量
深入final

  final修饰的引用类型,该引用不可重新指向其他的java对象

  但是final修饰的引用,该引用指向的对象的属性是可以修改的