需要掌握的知识点:

  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修饰方法表示该方法不能被子类重写

JAVA基础-继承机制的更多相关文章

  1. Java基础-类加载机制与自定义类Java类加载器(ClassLoader)

    Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...

  2. 《Java基础——继承》

    Java基础--继承     一.类的继承: 规则: 1.一个子类只能有一个父类,但一个父类可以有多个子类,每个子类都可以作为父类使用. 2.若一个类没有声明父类,则默认其父类为Object. 3.父 ...

  3. java的继承机制

    这次我想深入探究以下java里类的继承机制.       我们知道,继承是java设计里的一个失败的地方.高司令说过:如果让他重新设计java的话,他会把继承去掉.而java里继承到底怎么了,会这么不 ...

  4. Java 基础 - 继承

    子类继承父类的private字段么? Oracle的Java Documentation对Inheritance的定义: 很直白,定义里面就告诉你了这不叫继承.继承的意思是你可以对其进行直接的调用和修 ...

  5. Java基础—继承

    继承是面向对象的核心特征之一,是由已有类创建新类的机制.利用继承机制,可以先创建一个具有共性的一般类,然后根据该一般类创建具有特殊性的新类,新类继承一般类的属性和方法,并根据需要增加自己的新属性和方法 ...

  6. java基础-继承

    浏览以下内容前,请点击并阅读 声明 一个由其他类继承的类叫子类(也叫继承类,扩展类等),该类继承的类叫父类或超类.除了Object类意外,所有的类都有切仅有一个父类,如果一个类没有用extends关键 ...

  7. JAVA基础-反射机制

    什么是JAVA的反射机制 Java反射是Java被视为动态(或准动态)语言的一个关键性质.这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其 ...

  8. Java基础---继承、抽象、接口

    一.概述         继承是面向对象的一个重要特征.当多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可.这时,多个类可以称为子类,单 ...

  9. Java基础——继承和多态

    面向对象的编程允许从已经存在的类中定义新的类,这称为继承. 面向过程的范式重点在于方法的设计,而面向对象的范式将数据和方法结合在对象中.面向对象范式的软件设计着重于对象以及对象上的操作.面向对象的方法 ...

随机推荐

  1. install-package : 由于无法加载项目 mydemo 的详细信息,操作失败

    安装nuget package包提示错误 install-package : 由于无法加载项目 mydemo 的详细信息,操作失败 解决方法 项目用dotnet cli 命令dotnet new mv ...

  2. 数据结构之链表(Linked list)

    说明:如果仔细阅读完全文后,可能感觉有些不统一,这里先说明下原因. 链表尾引用不统一:在介绍单链表时,只有一个链表首部的引用(head) 指向第一个节点.你看到后面关于双链表及循环列表时,除了指向第一 ...

  3. linux安装QT-Designer两种方法

    1.安装Qt-Creator, Qt-Creator自带了qt-designer 2.安装qt5-default,qttools5-dev-tools

  4. 04 . Docker安全与Docker底层实现

    Docker安全 Docker安全性时,主要考虑三个方面 # 1. 由内核的名字空间和控制组机制提供的容器内在安全 # 2. Docker程序(特别是服务端)本身的抗攻击性 # 3. 内核安全性的加强 ...

  5. MQ系列(0)——MQ简介

    mq简介 mq 就是消息队列(Message Queue).想必大家对队列的数据结构已经很熟悉了,消息队列可以简单理解为:把要传输的数据放在队列中,mq 就是存放和发送消息的这么一个队列中间件.在消息 ...

  6. java中HashMap原理?

    参考:https://www.cnblogs.com/yuanblog/p/4441017.html(推荐) https://blog.csdn.net/a745233700/article/deta ...

  7. 阿里云用smtp无法发送邮件

    无法发送邮件是因为什么网络协议的要求必须要封掉25端口,而这个解封的话弄了很长时间也没有弄开,所以就换了别的方法 这个的话我这块用的是PHPMailer 然后我把这个PHPMailer的配置文件里的 ...

  8. cb31a_c++_STL_算法_查找算法_(4)find_first_of

    cb31a_c++_STL_算法_查找算法_(4)find_first_offind_first_of(b,e,sb,se),sb,second begin, se,second end();find ...

  9. Redis系列(五):数据结构List双向链表中基本操作操作命令和源码解析

    1.介绍 List是通过ListNode实现的双向链表. 1.双端:获取某个结点的前驱和后继结点都是O(1) 2.无环:表头的prev指针和表尾的next指针都指向NULL,对链表的访问都是以NULL ...

  10. SpringBoot从入门到放弃之配置Spring-Data-JPA自动建表

    pom文件配置引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...