zoukankan      html  css  js  c++  java
  • 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修饰方法表示该方法不能被子类重写

  • 相关阅读:
    http://www.cnblogs.com/zhengyun_ustc/p/55solution2.html
    http://www.cnblogs.com/carekee/articles/1854674.html
    http://www.blogjava.net/xylz/archive/2010/07/08/325587.html
    http://honda418.iteye.com/blog/337052/
    解决myeclipse每次启动注册码过期输入注册码
    JavaScript只能为汉字
    解决 不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接
    websphere变成英文了怎么变回中文
    【技术贴】解决MySql连接不上 ip远程连接Host is not allowed to conn
    【技术贴】解决bug mantisbt APPLICATION ERROR #1502 没有找到类别
  • 原文地址:https://www.cnblogs.com/JeasonIsCoding/p/13232452.html
Copyright © 2011-2022 走看看