前言

类的继承性是面向对象语言的基本特性,多态性前提是继承性。Java 支持继承性和多态性。——Java从小白到大牛

继承:三大特性之一,关键词:extends

简单用伪代码去介绍一些

  • 假设需要定义个student类

public class Student{
   private String name;//名字
   private int age;//年龄
   private int sex;//性别
}
  • 再来个需求,需要定义一个学生Andy,不用继承时候,需要一个个去定义;

public class Andy{
   private String name;
   private int age;
   private int sex;
   private String country;//新增一个国家信息
}
  • 从上面看两者有着很多的相似的重复定义的东西,如果使用继承去写这段代码就可以如下:

public class Andy extends student{
private String country
}

所以从上面可以看出类的继承大致用途,Andy类已经继承了Student类,上面的父类便是student,extends后面跟着的。继承的时候,要明确指出,要不然就是在Java标准根类Object进行继承。

再者,在继承的过程中,除了你可以在新的类中去添加东西,也不一定非得使用基类的方法属性等。

  • 还可以有多层继承关系(下面的输出是随便定义的伪代码,可以是直接输出某一些语句,方便运行查看)

class Art{
Art(){输出1}
}
class Music extends Art{
Music(输出2)
}
class Dance extends music{
public Dance(){输出3}
public static void main(String args[]){
dance x = new dance();
}
}
//输出的顺序是1 2 3

父类与子类的构造函数问题

  • 若不在类中定义构造函数,会默认生成一个无参的函数构造器,如果有了就不会。(构造器即构造函数,与类同名,在初始化的时候就被调用,,默认的构造函数是不带任何参数的)

class Art{


//等同于下面
class Art{
public Art(){
//
}
  • super关键字

Java用super表示超类的医生,当前类是从超类继承来的。

class Game{
   int h;
   Game(int i){//构造函数
       System.out.println("this is a game!");
  }
   public static void printg(int d){//普通函数
       System.out.println("12");
  }
}
class ballGame extends Game{

   ballGame(int i){
       super(i);//调用父类的构造器,漏了这句就会报错,显示there is no default constructor available
       System.out.println("ballGame is coming!");
       super.h = 3;//访问父类的属性
  }
}

super可以用于访问父类定义的属性,用于调用父类中的成员方法,super代表父类的内存空间。可以访问父类的父类

class Game{
   int h;
   Game(int i){//构造函数
       System.out.println(i);//输出
       System.out.println("第一层");
  }
   public static void printg(int d){//普通函数
       System.out.println("1");
  }
}
class ballGame extends Game{
   ballGame(int i){
  super(i);//调用父类的构造器
  System.out.println("第二层");
  super.h = 2;//访问父类的属性
  }
}

public class jichengSuper extends ballGame{
   jichengSuper(int b) {
  super(b);//调用的是上面父类的构造函数,将输出3
    int a = super.h ;//将第二层里的3赋值给a
    System.out.println(a);//打印
  }
   public static void  main(String args[]){
       new jichengSuper(3);//这里的3将代进去上面的构造函数jichengSuper中
       System.out.print("最后一层");
  }

}
/**
*output:
3
第一层
第二层
2
最后一层
*/

  • 接口在实现的时候,在类中一定要实现接口的抽象方法

  • 而继承不用,想要用哪个再用

others

可以有多个接口但是只能有一个继承。一般情况下,一个子类只能继承一个父类,这称为“单继承”,但有的情况下一个子类可以有多个不同的父类,这称为“多重继承”。在Java中,类的继承只能是单继承,而多重继承可以通过实现多个接口实现。

浅谈Java三大特性之继承的更多相关文章

  1. 浅谈Java三大特性

    Java三大特性想必大家都不陌生:封装.继承以及多态.很多刚接触Java的小伙伴都会想,它们到底有什么了不得之处,又赋予Java这门编程语言什么魔力呢?今天我们来探讨一下吧~~ 首先,名词解释: 封装 ...

  2. 浅谈Java三大特性之封装

    目录 前言 好处 介绍(实现方式) 示例 小结 感谢阅读!!! 三大特性之浅谈封装 前言 英语:Encapsulation--封装,包装. 面向对象的封装与真实世界的目的是一样的.封装能够使外部访问者 ...

  3. 浅谈Java三大特性之多态

    目录 一.前言 二.发生的条件 三.多态包含(或者说体现在)两个方面: 四.示例 感谢阅读 一.前言 这篇讲下三大特性之一的多态,可以通俗得去理解,多种形态,多种姿态... 那么在面向对象的程序设计中 ...

  4. Java三大特性(封装,继承,多态)

    Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...

  5. java 三大特性_继承、封装、多态_day005

    一.继承: java的三大特性之一.两个类之间通过extends关键字来描述父子关系,子类便可拥有父类的公共方法和公共属性.子类可以继承父类的方法和属性,子类也可以自己定义没有的方法或者通过覆盖父类的 ...

  6. 浅谈Java三大框架与应用

    前言:对于一个程序员来说,尤其是在java web端开发的程序员,三大框架:Struts+Hibernate+Spring是必须要掌握熟透的,因此,下面谈谈java三大框架的基本概念和原理. JAVA ...

  7. Java三大特性之继承

    二.类的继承 1. 概念:从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并能扩展新的能力. 2. 一个不由任何类派生出来的类称为基类,一个派生类最近的上层类称为该类的父类,从某一类派生出来 ...

  8. java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  9. java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

随机推荐

  1. jquery获取ul下的所有li个数

    通过jquery获取ul下所有li的个数(eg) $("ul li").length 通过jquery设置标签css的样式(eg)$("#div").css({ ...

  2. mysql存储表情报错

    数据库版本:mysql  Ver 8.0.16 数据库字符集:utf8 原因:mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情.但 ...

  3. linux下实现keepalived+nginx高可用

    1 nginx负载均衡高可用 1.1 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务, ...

  4. Added non-passive event listener to a scroll-blocking 'touchmove' event. Consider marking event handler as 'passive' to make the page more responsive

     Vue控制台警告:  Added non-passive event listener to a scroll-blocking 'touchmove' event. Consider markin ...

  5. Text Infilling解读

    多头自注意力token解码器,该解码器能够对过去和未来的信息进行condition处理,适合填充任务:自注意力机制尤其适合填充文本,因为它可以为每个空白处从左到右及从右到左双向建模,为全部语义进行有效 ...

  6. atoi()函数的用法

    注意:atoi()函数并不能单纯的把某字符串中的某字母转化为单个数字. 用法参考:https://www.cnblogs.com/ralap7/p/9171613.html

  7. mescroll.js简单的上拉加载、下拉刷新插件,带完整注释

    声明:本插件模仿自mescroll.js,随手所作,仅以注释提供思路,只实现了部分效果,且没有考虑兼容,有兴趣的朋友随意一看.api大家可参考mescroll.js API汇总一文. demo:点我下 ...

  8. [lua]紫猫lua教程-命令宝典-L1-01-02. 变量

    L1[变量]01. 变量命名规则 命名规则:数字字母下划线构成 但是不能数字开头 不推荐中文名 很多都是不支持中文 但是在一些其他的编辑器里面 比如触摸精灵 之类的 就可以 注意 :变量命名必须要包含 ...

  9. 问题:宿主机访问不到虚拟机内的docker容器

    问题描述:初学Docker,主机Windows 10,虚拟机Cent OS7 运行了一个docker容器(Tomcat7),宿主机无法访问容器运行的服务. 问题原因:宿主机无法访问docker容器ip ...

  10. 每天进步一点点------Sobel算子(1)

    void MySobel(IplImage* gray, IplImage* gradient) { /* Sobel template a00 a01 a02 a10 a11 a12 a20 a21 ...