• 2020.7.22


    学习内容:

    1、Java中的继承

    Java中的继承使用关键字  extends  表示

    • class 子类 extends 父类 { }

    使用继承,子类可以拥有父类中的非私有属性,即父类中的非私有属性可以供子类共享,这样多个类中相同的属性就可以抽取出来作为父类管理

    注:Java不支持多继承,一个类只能继承一个类,即子类只能继承一个父类,但是一个父类可以被多个子类继承

    2、super 关键字

    在Java继承中,子类可以使用 super 关键字调用父类的非私有属性和非私有方法,还可以调用父类的非私有构造方法

    (1)使用 super 关键字调用父类属性

    • super . 父类属性(super 关键字可以省略)
    • super . 父类方法

    (2)使用 super 关键字调用父类的构造方法

    使用 super 调用父类的构造方法与使用this 调用构造方法有异曲同工之处,如果使用 super (),则是调用父类的无参构造方法;如果 super (参数),则是调用父类有参数的构造方法

    //调用父类的属性 name
            String name = super.name; 
    //调用父类的方法 getAge()
            public void test() {
                super.getAge();
            }
    //调用父类构造函数
            public Student() {
                super("sky",26);
            }

    (3)子类和父类构造方法的执行顺序

    1. 子类默认调用父类的无参构造方法,也就是说,子类的构造方法中会默认调用 super (),并且在构造方法的第一行
    2. 如果子类只提供有参的构造方法,则必须在子类的构造方法中调用父类的构造方法
    3. 执行完父类的构造方法后,再调用本类中的构造方法

    注:为了更好地继承类,每个父类都应该提供无参的构造方法,避免造成没有构造方法而造成继承错误

    3、Java中多态的实现

    Java中多态的体现具体表现在方法的重载和覆盖上

    覆盖主要是指子类重写了父类中的方法

    子类重写父类中的方法,即子类中的方法与父类中的方法保持一致,但是方法的修饰符一定要大于等于父类中方法的修饰符

    4、类型检测——向上转型 / 向下转型

    (1)向上转型

     向上转型是指父类对象的引用指向子类对象

    • 父类 对象 = new 子类()
    package day01;
    
    public class Father {
        public void say() {
            System.out.println("father say()");
        }
        public static void main(String[] args) {
                //向上转型
            Father son=new Son();
            son.say();
                
            }
        }
    class Son extends Father{
        public void say() {
            System.out.println("son say()");
        }
    }

    结果为: son  say( )

    因为父类对象的引用指向的是一个子类,所以打印方法也会是子类的方法

    注意:有时使用向上转型会丢失掉子类特有的方法,例如:

    (2)向下转型

    • 父类 对象1 = new 子类();子类 对象2 = (子类)对象1

    使用向下转型必须使用(类型) 进行强转

    package day01;
    public class Father {
        public void say() {
            System.out.println("father say()");
        }
        public static void main(String[] args) {
            //向上转型
            Father son=new Son();
            //向下转型
            Son son2=(Son)son;
            son2.sayMe();    
            }
        }
    class Son extends Father{
        public void say() {
            System.out.println("son say()");
        }
        public void sayMe() {
            System.out.println("son sayMe()");
        }
    }

    注意:不能将父类对象强转成子类对象,例如:

     在开发中,凡是用到继承,我们应该第一想到使用向上类型转换

     

    遇到的问题:

    1、转型问题不太理解

    https://www.cnblogs.com/wangtianze/p/6691216.html

    向下转型的意义

    向上转型的意义

    明天要学习的内容:

     5.2.3 动态绑定  5.3 static 关键字 5.4 final 关键字

  • 相关阅读:
    django orm 以列表作为筛选条件进行查询
    申请Let's Encrypt通配符HTTPS证书
    redis集群部署及踩过的坑
    MySQL的索引是什么?怎么优化?
    Session管理之超时设置和强制下线
    在MySQL中使用explain查询SQL的执行计划
    基于Docker搭建MySQL主从复制
    这些年一直记不住的 Java I/O
    高并发大容量NoSQL解决方案探索
    php 如何生成静态页
  • 原文地址:https://www.cnblogs.com/ltw222/p/13395943.html
Copyright © 2020-2023  润新知