Java_类与对象05_继承(extends)

  格式:

    class 子类名 extends 父类名 {}

  好处:

    A:提高了代码的复用性

    B:提高了代码的维护性

    C:让类与类之间产生了关系,是多态的前提

  类与类产生了关系,其实也是继承的一个弊端:类的耦合性增强了。

    开发的原则:低耦合,高内聚。

    耦合:类与类的关系

    内聚:就是自己完成某件事情的能力

   

1.     继承的注意事项:

  a)    JAVA是(只支持)单继承:一个类只能有一个直接的父类

     Java支持多层继承(继承体系)。//儿子继承父亲,父亲继承爷爷。

  b)    子类可以继承父类所有的成员变量与成员方法(包括private)。

     子类可以继承父类private的成员,但不能使用

  c)     子类不能继承父类的构造方法。(可使用super关键字)

  d)    若子类和父类中的成员变量或方法名称一样,在子类方法中访问一个变量的查找顺序:

     a:在子类方法的局部范围找,有就使用

     b:在子类的成员范围找,有就使用

     c:在父类的成员范围找,有就使用

     d:如果还找不到,就报错。

            class Father {
                protected int aaa = 20;
            }
    
            class Son extends Father {
                private int aaa = 30;
                public void show() {
                    int aaa = 40;
                    System.out.println(aaa); // 40
                    System.out.println(this.aaa); // 30
                    System.out.println(super.aaa); // 20
                }
            }

2.     访问权限:类(顶层类)只能使用public默认的访问权限修饰。

   

3.     JAVA中类不能确定自己是否被继承。

4.     方法的重写(方法的覆盖)

  a)    子类根据需要重写父类中的方法。

  b)    重写的方法要与被重写的方法具有相同的方法名,参数列表,返回类型。

  c)    重写方法的访问权限要大于等于被重写方法的访问权限。

  d)    重写方法声明的异常必须小于等于被重写方法声明的异常(当父类的方法声明了异常,子类重写的方法可以不声明异常。如果子类重写的方法声明了异常,必须小于等于父类方法声明的异常)。

  e)    父类静态方法,子类也必须通过静态方法进行重写。

    static不能产生重写,但现象确实如此,为什么算不上方法重写,因为在多态中这种现象不成立。

  f)     父类中私有(private)方法不能产生重写。(可以“重写”,没有重写的效果,所以并不叫重写)

5.     super关键字:在子类中引用父类中的成员(通常,在子类中引用父类同名的成员)。

    this和super的用法:

      引用成员:

        this.成员变量 调用本类的成员变量

        super.成员变量 调用父类的成员变量

        this.成员方法 调用本类的成员方法

        super.成员方法 调用父类的成员方法

      引用构造方法:

        this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。

        super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。

6.     继承中的构造方法

  a)    子类会在自己每一个构造方法的第一行使用super()调用父类无参的构造方法。//如果不是放在第一条语句上,就可能对父类的数据进行了多次初始化。

    子类构造方法执行前默认先执行父类的无参构造方法

  b)    当父类没有无参的构造方法时,而子类也没有调用父类有参数的构造方法,则编译失败。

 

猜你喜欢

转载自www.cnblogs.com/zhaolanqi/p/9234897.html