• JAVA基础-继承机制


    需要掌握的知识点:

    1. 包的使用
    2. 继承时,子类如何覆盖父类方法(重写和重载)
    3. 继承时,构造方法的执行过程
    4. JVM中子类如何实例化(先实例化父,再实例化子)
    5. super和this关键字
    6. final关键字

    包的导入

    import java.util.Scanner;
    
    public class PackageTest {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            sc.nextInt();
        }
    }
    

    Object类是所有类的鼻祖

    当没有任何显示的继承类时,默认继承java.lang包下的Object类

    //object源码中一些比较常用的方法
    
        public boolean equals(Object obj) {  //引用比较
            return (this == obj);
        }
    
        //返回类名加hashcode
        public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
    
        public final native Class<?> getClass();  //返回类名
    
    

    访问修饰符权限

    访问修饰符 同类 同包 子类 其他
    public
    protected
    默认
    private

    其中protected含义是保护继承的子类,这样在不同的包中就可以让子类访问了。

    使用super关键字,super代表父类对象

    • 访问父类构造方法

      super();
      super(name);
      
    • 访问父类属性

      super.age;
      super.name;
      
    • 访问父类方法

      super.print();
      

      总结一下super和this 的区别

    ---- ---- ---- ----
    this访问本类构造方法必须第一行 本类属性 本类方法 this可以引用当前对象
    super访问父类构造方法必须第一行 父类属性 父类方法 super只能出现在子类中

    方法重写

    • 子类方法必须和父类具有相同的方法名称、参数列表和返回值类型(Eclipse中快捷键ALT+/可以快速重构父类函数)
    • 子类方法的访问权限只能大于等于父类
    • 子类方法抛出的异常不能大于父类被重写的异常

    对象的创建过程

    1. JVM会先加载父类,再加载子类
    2. 在栈内存中为定义的变量分配内存空间,同时在堆内存中为真正的对象分配内存空间
    3. 调用构造器来为创建出的对象进行初始化
      1. 子类中所有的构造方法,默认都会先调用父类中无参的构造方法 (如果父类中没有无参的构造方法,那么在子类中要利用super手动添加一个父类的有参构造方法)
      2. Object类的构造器是最先被执行的

    final 关键字

    1. final修饰类表示该类不能被继承
      比如String类就是这种情况

    2. final修饰变量

      1. 表示该变量只能被赋值一次
      2. 成员变量、局部变量都可以使用final修饰(其中成员变量必须在声明时赋值或者通过构造方法赋值,变成一个常量。局部变量可以不在声明的时候赋值,但是也只能赋值一次)
      3. 必须手工为变量赋值一次(包括成员变量,如果赋默认值,没有任何意义)
    3. final修饰方法表示该方法不能被子类重写

  • 相关阅读:
    使用自制事务进行异常信息的记录:Autonomous transactionslog
    backup methodsexp and imp
    一个 SQL 同时验证帐号是否存在、密码是否正确
    使用存储过程进行分页:page by Procedure
    推荐一款类似于editplus的文本编辑工具:note++
    myeclipse8.5反编译插件的安装使用jdgui插件
    [转]JavaMail的使用之邮件发送 详解
    Thinking in java中内部类的例子。
    [转]tomcat6.0下的log4j日志文件配置过程
    127.X.X.X開頭的網路都是特殊用途的嗎!?
  • 原文地址:https://www.cnblogs.com/JeasonIsCoding/p/13232452.html
Copyright © 2020-2023  润新知