第七章 继承

继承:可以得到基类中的所有可以被子类访问的成员。强调可以被访问的成员,是因为基类的private成员不可得到,对于不同包中基类的friendly成员也是不可得的

1.组合描述的是“有一个的关系”,比如汽车类和车轮类,汽车含有车轮;继承描述“是一个”的关系,水果类和香蕉类,香蕉是一种水果

2.如果基类没有默认构造器或者想要调用基类待参数构造器,必须在子类构造函数第一句代码中使用super显示调用基类构造器。

class F {
    F(int i) {
        System.out.println("This is Class F");
    }
}
public class Super extends F{

    Super() {
        super(1);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new Super();
    }

}

3.重载和覆盖的区别

函数名和参数列表唯一的标识了一个函数即为函数的特征签名

重载:方法名字相同,但参数列表不同(包括参数声明的顺序),重载没有方法可见性要求。(返回值不可以作为重载的判断依据)

覆盖:方法名字,参数列表,以及返回值相同,覆盖不可以降低方法的可见性。(协变返回类型,返回值可以是被覆盖方法,返回类型的子类)

4.宽转型、窄转型,向上转型和向下转型

宽转型和窄转型是针对基本数据类型而言的,窄转型是不安全的要进行强制类型转换

向上转型和向下转型针对对象而言,向上转型是安全的,向下转型不安全,向上转型可以保证使用基类发送的所有消息(即方法调用),子类都可正确接收

5.final关键字总结

  (1)final修饰数据,表示常量,必须在定义处或者构造器中进行初始化

  (2)  final修饰方法,第一种表示内联函数(现在已经过时,现在把关于性能的问题都交给编译器和虚拟机了)

    第二种表示:此方法禁止被覆盖,入过个覆盖会报错。

  (3)final修饰类,表示此类不可被继承

posted @ 2019-08-20 15:12  卑微芒果  Views(108)  Comments(0Edit  收藏  举报