java面向对象,继承

1:为什么使用继承?

将重复代码 抽取到父类中,方便修改代码,减少代码量 

2:如何使用继承?

使用继承

编写父类            class Pet { //公共的属性和方法 }

编写子类,继承父类                  class Dog extends Pet { //子类特有的属性和方法 }

理解继承

子类 访问父类成员       

访问父类构造方法                 super();                  super(name);

访问父类属性                 super.name;

访问父类方法                    super.print();

3:子类可以继承父类的所有些资源吗?

不能被继承的父类成员:private成员,

子类与父类不在同包, 使用默认访问权限的成员,构造方法

4:访问修饰符              private             friendly(默认)          protected            public

      本类                             T                        T                            T                        T

      同包                             F                        T                            T                        T 

      子类                             F                        F                            T                        T

      其他                             F                        F                            F                        T

5:多重继承关系的初始化顺序是怎样的?

父类属性——父类构造方法——子类属性——子类构造方法

6:何时使用继承?

继承与真实世界类似(符合is-a关系的设计使用继承 ),

继承是代码重用的一种方式(将子类共有的属性和行为放到父类中)

7:方法重写的规则

方法名相同   参数列表相同    返回值类型相同或者是其子类     访问权限不能严于父类

8:方法重载和方法重写:

                 位置          方法名        参数表                 返回值                          访问修饰符

方法重写:子类           相同           相同           相同或者是其子类           不能比父类更严格

方法重载:同类           相同          不相同                  无关                                  无关

PS :构造方法不能被继承所以不能被重写。

9:super关键字来访问父类的成员

           super只能出现在子类的方法和构造方法中

           super调用构造方法时,只能是第一句

           super不能访问父类的private成员

10:抽象类:实例化对象没有意义的类。

             Java中也使用抽象类,限制实例化

11抽象方法:

abstract也可用于方法——抽象方法

抽象方法没有方法体 抽象方法必须在抽象类里

抽象方法必须在子类中被实现,除非子类是抽象类

12:final用法

Penguin类不希望再被其他类继承     使用final类

方法不希望被重写     使用final方法

属性值不希望被修改     使用常量

final修饰符:

修饰的类,不能再被继承

修饰的方法,不能被子类重写

修饰的变量将变成常量,只能在初始化时进行赋值

原文地址:https://www.cnblogs.com/zjx-959/p/13036660.html