美文网首页
JAVA:继承

JAVA:继承

作者: 确认过眼神啊 | 来源:发表于2020-09-09 13:49 被阅读0次
  • 一种类与类之间的关系
  • 使用已存在的类的定义作为基础建立新类
  • 新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性的继承父类
     
  • 父类 : 基类
  • 字类 : 派生类
    继承的关系
  • 满足"A is a B"的关系就可以形成继承关系
    如:
      猫,狗是动物==>猫,狗继承自动物
      学生,老师是人==>学生,老师继承自人
      小轿车,大卡车是汽车==>小轿车,大卡车继承自汽车
     
    使用extends实现封装
//一个类只能继承自一个父类
// 编写父类
class Animal{
// 公共的属性和方法
}
// 编写字类,继承父类
class Dog extends Animal{
 // 子类特有的属性和方法
}
class Cat extends Animal{
// 子类特有的属性和方法 
}

 
方法重写
语法规则:

  • 返回值类型
  • 方法名
  • 参数类型、顺序、个数都要与父类继承的方法相同
     
    方法重写 vs 方法重载
  • 方法重写:
    a.在满足关系的子类中
    b.方法名、参数个数、顺序、类型与父类、返回值相同
    c.访问修饰符的限定范围大于等于父类方法
  • 方法重载:
    a.在同一个类中
    b.方法名相同
    c.参数个数,顺序,类型不同
    d.返回值类型、访问修饰符任意
 方法存在重写,属性不存在重写

访问修饰符

  • 公有的:public
  • 私有的:private
  • 受保护的:protected
  • 默认
    访问修饰符 本类 同包 子类 其 他
    private ✔️
    默认 ✔️ ✔️
    protected ✔️ ✔️ ✔️
    public ✔️ ✔️ ✔️ ✔️

super
子类访问父类成员

  // 访问父类成员方法
  super.print();
  // 访问父类属性
  super.name;
 // 访问父类构造方法
  super();
  • 子类的构造的过程中必须调用起父类的构造方法
  • 如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类的无参构造方法
  • 如果子类的构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错
  • 使用super调用父类指定构造方法,必须在子类的构造方法第一行
     
    super vs this
  • this:当前类对象的引用
    -访问当前类的成员方法
    -访问当前类的成员属性
    -访问当前类的构造方法
    -不能再静态方法中使用
  • super:父类对象的引用
    -访问父类的成员方法
    -访问父类的成员属性
    -访问父类的构造方法
    -不能再静态方法中使用
  • 构造方法调用时,super和this不能同时出现

实例化顺序

  • 继承后的初始化顺序
    父类静态成员
    子类静态成员
    父类对象构造(属性(赋值)、构造代码块、构造方法)
    子类对象构造(属性(赋值)、构造代码块、构造方法)
     

Object

  • Object类是所有类的父类
  • 一个类没有使用extends关键字明确标识继承关系,则默认继承Object类(包括数组)
  • Java中的每个类都可以使用Object中定义的方法
    **Object 类的常用方法
方法 说明
toString() 返回当前对象本身的有关信息,按字符串对象返回
equalIs() 比较两个对象是否是同一个对象,实则返回true
hashCode() 返回该对象的哈希代码值
getClass() 获取当前对象所属的类信息,返回Class对象

final

1、修饰类表示不允许被继承

2、修饰方法表示不允许被子类重写

  -final修饰的方法可以被继承
  -不能修饰构造方法

3、小就是变量表示不允许修改

  -方法内部的局部变量:在使用之前被初始化赋值即可
  -类中成员变量:只能在定义时或者构造代码块、构造方法中进行初始化设置
  -基本数据类型的变量:初始赋值止后不能更改
  -引用类型的变量:初始化之后不能再指向另一个对象,但指向的对象的内容是可变的

4、可配合static使用

5、使用final修饰可以提高性能,但会降低可扩展性

 

注解

JDK1.5版本引入的一个特性

可以声明在包、类、属性、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释

注解的分类

按照运行机制分

  • 源码注解
  • 编译时注解
  • 运行时注解
    按照来源分
  • 来自JDK的注解
  • 来自第三方的注解
  • 我们自己定义的注解

相关文章

  • Java继承

    一、Java继承详解 Java继承目录:1.为什么要”继承“?2.继承的类型2.1 单继承2.2 多重继承2.3 ...

  • Java继承

    Java继承 一、继承类型 Java不支持多继承,但是支持多重继承 二、继承的特性 子类拥有父类非 private...

  • JAVA语言第二课

    JAVA面向对象——四大特征 继承篇——extendsJava 继承继承的概念继承是java面向对象编程技术的...

  • java培训专家介绍java的特性之:继承

    java培训专家介绍java的特性之:继承 什么是继承?java特性继承又是什么?在线教育平台专家为你解答! 多个...

  • JAVA 核心笔记 || [7] 继承

    继承 被继承的类为 基类 或者 父类 类 只能单继承 不可同时继承多类 Animal.java Dog.java ...

  • 继承

    java中对于继承,java只支持单继承。java虽然不直接支持多继承,但是可实现多接口。 1:成员变量。当子父类...

  • 2017-12-29

    Java学习日记(4) 主要谈一下——继承extends 个 Tips : Java不像c++,Java是单继承(...

  • JAVA核心技术总结(五六章)继承&接口与内部类

    第五章 继承 在Java中,所有的继承都是公有继承,没有C++的私有继承和保护继承 Java同C++一样,子类不能...

  • Java初级笔记No.3(更新中)

    2018.7.26 1、Java中的继承 Java中使用extends关键字来说明继承关系。 2、继承的特性 ja...

  • Java中的继承

    Java中的继承 Java 继承 什么是继承 继承是用来描述“is-a”的关系;如果说两个对象A和B,若可以描述成...

网友评论

      本文标题:JAVA:继承

      本文链接:https://www.haomeiwen.com/subject/eqwlektx.html