首页 > 编程语言 >Java 继承与多态

Java 继承与多态

时间:2023-09-16 16:44:56浏览次数:43  
标签:调用 Java 继承 子类 多态 blood 父类 方法 public

1.子类与父类

  • 子类:由其他类派生出来的类,父类:包含一些共同特征。
  • 子类继承父亲的所有非私有成员。
  • 子类只能继承一个父亲
  • 子类可以直接调用父类的非私有方法。

2.继承语法extend

public class Margicion extends Role {
    @Override
    public void showfight(){
        System.out.println("挥剑攻击");
    }
}
  • 该子类继承自角色。
  • 设计类的继承关系:把一些对象的共用特征放入父类,把子类特有的特征放入子类。

3.超级父类Object

  • Object是所有子类的父类:如果定义类时候没有说明继承自哪个类那么说明它默认继承自Object。

4.覆盖方法

  • 当子类用覆盖方法时候,父类的方法会被屏蔽。
  • 可以通过覆盖方法写出一些带有子类自己特征的方法。
  • 子类覆盖方法时候不能降低父类该方法的可见性。
  • 子类覆盖方法的返回值、方法名、参数都要相同。
  • 覆盖与重载的区别:
    • 重载:同一个类里有至少两方法使用同一个方法名,但它们的参数不同,编译器会根据传参来判断使用什么方法。
    • 覆盖:指子类重定义父类已有的方法从而体现子类自己的行为。

5.super关键字

  • 子类中的属性名与父类中的属性名一样时候,父类的属性被屏蔽,但并不代表不存在。可以使用super关键词访问。
  • public class Margicion extends Role {
        int blood=1;
        @Override
        public void showfight(){
            System.out.println("挥剑攻击");
            System.out.println(super.blood);
            System.out.println(blood);
        }
        public Margicion(String name ,int blood ,int alt){
            this.alt=alt;
            super.blood=blood;
            this.name=name;
        }
    }

    这里给父类的blood赋值。

  • 子类可以使用super调用父类构造器

       

6.父类构造器

  • 创建子类时,父类构造器无论如何都会被调用
  • 调用父类构造器的super语句必须放在子类构造器的第一行
  • 如果子类构造器没有显式的调用父类的构造器则会默认调用无参构造器,如果父类没有无参构造器(有有参构造函数,但没有定义无参构造函数)则会报错。

7.多态

  • 子类 is-a 父类  
    • 可以用父类类型变量指向子类类型对象
      shape cir=new Circle(10.0);
    • 但父类变量不能操作子类特有的方法,例如不能cir.getRadius.但可以通过类型转换调用
  • 动态绑定:对于子类覆盖的方法,JVM会根据调用方法的实际对象类型来决定调用哪个方法。

8.instanceof关键字

  •  功能:测试对象的实际类型。返回值:boolean类型

                 

9.abstract抽象类

  • 使用abstract的累
  • 不能被实例化,只能作为父亲
  • 只有声明没有实现方法:public abstract double getArea();
  • 如果类只有部分抽象方法,那也是抽象类

10.访问控制符

       

 

标签:调用,Java,继承,子类,多态,blood,父类,方法,public
From: https://www.cnblogs.com/Timefliesblogs/p/17706916.html

相关文章

  • 无涯教程-JavaScript - ABS函数
    描述数字除以除数后,ABS函数将返回余数。输出与除数的符号相同。语法MOD(number,divisor)争论Argument描述Required/OptionalNumberThenumberforwhichyouwanttofindtheremainder.RequiredDivisorThenumberbywhichyouwanttodividenumber.Requir......
  • java安装与卸载
    Java三大版本JavaSE:标准版JavaME:嵌入式开发JavaEE:企业级开发JDK,JRE,JVMJDK:JavaDevelopmentKitJava开发工具JRE:JavaRuntimeEnvironmentJava运行环境JVM:JavaVirtualMachineJava虚拟机(一次开发,到处运行)java下载与安装  官网:https://www.java.com/zh-CN/downl......
  • 无涯教程-JavaScript - VLOOKUP函数
    描述当需要在表中或按行查找内容时,请使用VLOOKUP。组织数据,以便您查找的值在要查找的返回值的左侧。语法VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])争论Argument描述Required/Optionallookup_value您要查找的值。您要查找的值必须在ta......
  • JavaScript 代码整洁技巧
    前言为什么代码要整洁?代码质量与整洁度成正比。有的团队在赶工期的时候,不注重代码的整洁,代码写的越来越糟糕,项目越来越混乱,生产力也跟着下降,那就必须找更多人来提高生产力,开发成本越来越高。整洁的代码是怎样的?清晰表达意图、消除重复、简单抽象、能通过测试。换句话......
  • java jdk 里自带的 javascript引擎的使用
    main方法代码:importjavax.script.ScriptContext;importjavax.script.ScriptEngine;importjavax.script.ScriptEngineManager;importjavax.script.ScriptException;publicclassMain{publicstaticvoidmain(String[]args)throwsScriptException{......
  • java---类和对象
    7.1概述Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。JavaObjectOrientedProgramming(JavaOOP)用Java语言来模拟真实的世界,用一系列相关的数据来进行描述的过程。种类,是一种抽象的......
  • 无涯教程-JavaScript - TRANSPOSE函数
    描述TRANSPOSE函数将单元格的垂直范围作为水平范围返回,反之亦然。必须将TRANSPOSE函数作为数组公式输入,该范围必须具有与行范围和列范围相同的行和列数。您可以使用TRANSPOSE在工作表上移动数组或范围的垂直和水平方向。语法TRANSPOSE(array)键入函数后,按CTRL+SHIFT......
  • 基于JAVA的运动健康微信小程序
    互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用基于web的运动健康小程序可以有效管理,使......
  • 基于JAVA的微信食堂线上订餐小程序
    通过移动互联网这几年的发展,单独的开发某些APP已经到了日暮西山的地步,原因不在于单个的APP功能丰富与否,而是因为用户生态体系的问题。使用智能手机的用户经过多年的使用习惯,已经越来越不喜欢安装各种的APP,除了正常生活和工作所必须的APP,不喜欢因为喜欢某些内容而被强制安装APP软件......
  • 无涯教程-JavaScript - RTD函数
    描述RTD功能从支持COM自动化的程序中检索实时数据。语法RTD(ProgID,server,topic1,[topic2]...)争论Argument描述Required/OptionalProgID已在本地计算机上安装的注册COM自动化加载项的ProgID的名称。将该名称括在引号中。Requiredserver应该在其中运行外......