`
kang_sun
  • 浏览: 3333 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

04_类的继承

阅读更多

一:类的继承的语法格式

 

1)关键字:extends

 

2)格式:
      public class 类名 extends 类名 {

      }

 

ps:java中类的继承是单继承,也就是说一个类只允许有一个直接的父类。

 

二:子类能在父类中继承到什么?

 

1)子类能继承到父类中所有的属性和方法。(但是可能不能全部调用)

 

2)java中类的成员方法的四种访问修饰符及子类什么情况下能调用父类中的哪些方法和属性?
     1.public 所有类均可访问到
     2.private 只有同一个类的内部才能够访问到
     3.默认的(friendly) 同一个包下可访问,继承下包外不可访问(java中默认的并没有关键字,friendly是根据c++形象而来)
     4.protected 同一个包下可访问,继承下包外也可访问

 

三:方法重写

 

1)使用方法重写的前提条件

     1.必须要有继承关系

     2.待重写方法的返回值的数据类型,参数个数,参数顺序,参数类型必须完全一致

     3.子类重写父类方法时可以扩大访问修饰符的范围或者不变(但是不能缩小)

 

2)什么情况下使用方法重写:父类与子类使用的方法需要的参数一致,返回值一致,但是方法体不同时

 

3)如何调用被重写之前的父类方法

     super.方法名(参数类型 参数名。。。)

 

四:自动转型

 

1)条件

      必须要有父类与子类的继承关系

 

2)格式

      父类名 对象名 = new 子类名();

 

3)缺陷:无法调用子类新定义的方法

     原因:1.新实例化的对象可以访问到子类的方法,但必须是子类重写了父类之后的方法,并且编译的时候用的是父类的方法,而在运行的时候就是访问的子类重写的方法,一句话:因为多态

                2.该变量不能再访问子类中新定义是属性,因为多态是针对重写的方法,不是覆盖之后的属性。

     ps:更详细的关于多态的理解和讨论请参见http://zhidao.baidu.com/question/176136172.html

 

4)好处:在写英雄的技能的代码时,对每一个不同的英雄都可以用同一个参数来传参,而不必每一个英雄都定义个方法来传参,这样就可以减少代码量等等等。

 

 五:接口

 

1)定义:只用于继承而使用其中的属性和未实现的方法的特殊"类",不能实例化

 

2)关键字:(定义接口的关键字)interface,(实现接口的关键字)implements

 

3)格式:

    1.定义接口:

       public interface 接口名{

       }

    2.继承接口:

       (接口继承接口,一个接口可以有多个父接口)

       public interface 接口名 extends 接口名,接口名...{

       }

       (类继承接口,必须实现接口中全部的方法,如接口有父接口则也必须实现父接口中的方法)

       public class 类名 implements 接口名{

       }

 

六:抽象类

 

1)定义:介于接口和类之间的一种特殊类,不能实例化,能够定义已实现和未实现的方法

 

2)关键字:abstract

 

3)格式:

     

public abstract class 抽象方法名 implements 接口名...{
        //抽象方法定义,必须加关键字abstract,继承的子类必须实现
      public abstract void 方法名();

        //可以定义已经实现的方法
      public void 方法名(){
        }

        //可以实现或者不实现接口中的方法
      public void 方法名(){}
}

 

4)使用方法:当需要频繁用到的接口中有很多未实现的方法时,就可以用抽象类继承,然后全部实现一遍,当我们需要用到哪个方法时只需要继承抽象类然后重写该方法即可,可大大减少代码量

 

ps:抽象类居然可以继承类而不报错,不过事实上继承了什么也干不了,因为里面只允许存在方法,抽象方法和属性,so...

 

0
0
分享到:
评论

相关推荐

    04_第4章 继承与多态1

    继承使得类之间形成一种"is-a"关系,允许子类继承父类的属性和方法,并且能够在此基础上添加自己的特性。在Java中,使用`extends`关键字来实现继承,一个类只能有一个直接父类,体现了单一继承的特性。 继承的目的...

    cpp代码-C++:类04__虚继承 virtual 避免菱形继承的问题

    在C++编程语言中,类的继承是一种强大的机制,它允许我们创建新的类(子类)基于现有的类(基类)。然而,当多个类都继承自一个共同的基类时,可能会出现一个问题,称为菱形继承(Diamond Inheritance)。这个问题在...

    21-08-04_FMDemo(004_通过迁移定义在MicrosoftSQLServer中自动生成相应的数据库-表-字段-约束规则).rar

    2. **编写迁移**:创建C#类,继承自`FluentMigrator.Migration`基类,然后使用链式API定义数据库操作,比如`Create.Table`, `Alter.Column`, `Add.ForeignKey`等。 3. **执行迁移**:在应用程序启动时或特定时刻运行...

    传智播客_贪吃蛇游戏开发04_编写各个类的主体框架

    在本课程"传智播客_贪吃蛇游戏开发04_编写各个类的主体框架"中,我们将深入探讨如何构建一个贪吃蛇游戏的基本结构,包括主要的类设计和对象之间的交互。贪吃蛇游戏是一款经典的编程练习,它可以帮助初学者理解游戏...

    传智播客_俄罗斯方块游戏04_编写各个类主体框架.rar

    《传智播客_俄罗斯方块游戏04_编写各个类主体框架》是一个关于Java编程的教程,专注于面向对象编程的基础知识。这个教程是Java学习路径的重要组成部分,无论是对于JavaEE还是JavaME的深入学习,都需要坚实的面向对象...

    javase_day04_v1_pm_all.zip

    3. **继承**:这是另一个面向对象的关键特性,允许一个类(子类)继承另一个类(父类)的属性和方法,实现代码复用。 4. **多态**:多态性使得子类对象可以被当作父类对象处理,这样在设计时可以使用更具通用性的...

    上机04_为宠物看病.zip

    通过这个项目,学习者可以掌握C#面向对象编程的基本概念,如类的定义、继承、对象的创建和操作,以及如何组织和管理一个C#项目。同时,它也提供了实践机会,让学习者了解如何将抽象概念应用于实际问题(如模拟宠物...

    CPP第04单元_C++面向对象程序设计2-类的继承-作业参考答案CMtx.hpp

    CPP第04单元_C++面向对象程序设计2-类的继承-作业参考答案CMtx.hpp

    学学Python_38类_04 超类

    超类是其他类的父类,它定义了一些通用的方法和属性,这些可以被子类继承并可能进行扩展或修改。继承则允许创建一个新的类,这个新类会拥有超类的所有特性,并可以添加新的功能或者覆盖原有的行为。 在Python中,...

    hoyer04a_MFC_

    1. **框架类**:MFC提供了一系列的框架类,如CWinApp,CWnd,CDialog,这些类是对Windows API的封装,使得开发者可以通过继承和实例化这些类来创建应用程序。 2. **消息映射**:MFC通过消息映射机制将消息处理函数...

    传智播客_Java培训_毕向东_Java基础[04-继承上]

    ### 传智播客_Java培训_毕向东_Java基础[04-继承上] #### 一、继承的概述 在面向对象编程中,继承是一种非常重要的机制,它允许我们创建一个新类来继承现有类的特性(属性和方法)。在Java中,如果多个类具有相同...

    C# 基础学习案例源码-2023(32套源码案例)适合初学者学习使用

    C# 基础学习案例源码(32套源码案例) CS_01你好世界 CS_02输入和输出 CS_03异常捕获 CS_04字符串拼装 CS_05枚举 CS_06数组 CS_07二维数组 CS_08交错数组 CS_09值类型和引用类型 ...CS核心_13_继承_里氏替换原则

    11_04_SSH_CRM.rar

    它继承了Struts1的优点并引入了许多新特性,如拦截器、OGNL表达式语言、强大的插件体系等。在CRM系统中,Struts2负责处理HTTP请求,将它们转发到相应的控制器,执行业务逻辑,并将结果返回给视图层。 2. **Spring**...

    lab 04_car_

    3. **Java编程**:系统可能采用Java作为主要编程语言,使用面向对象的概念,如类、对象、继承、封装和多态性。需要理解Servlet和JSP(JavaServer Pages)用于处理HTTP请求和渲染动态网页。 4. **Model-View-...

    传智播客_Java培训_毕向东_Java基础[04-继承下]

    ### 传智播客_Java培训_毕向东_Java基础[04-继承下] #### 4.7 抽象类 ##### 4.7.1 抽象类概述 在面向对象编程中,**抽象**是一种重要的概念,它允许我们从多个相关对象中提取出共同的特性或行为。例如,考虑狼和...

    jsd1906笔记代码案例04_JavaSE

    - 继承:一个类可以继承另一个类的特性,实现代码复用。 - 多态:同一种行为在不同对象上有不同的表现形式,通过抽象类或接口实现。 3. **飞机大战案例分析**: - 游戏架构:理解如何使用Java进行游戏开发,...

    Examples_04_06.zip_android

    ListView由多个列表项(ListView items)组成,每个列表项通常对应于一个View对象,这些View对象由Adapter类提供。Adapter是连接数据源(如ArrayList或数据库查询结果)与ListView的桥梁,它负责将数据转化为...

    lab04_C++_

    7. **C++编程技巧**:可能涵盖错误处理、内存管理(堆与栈的区别、动态内存分配、智能指针)、函数模板、类和对象、继承、多态等面向对象编程概念。 这个"lab04"练习提供了实践和提高C++编程技能的机会,特别是对于...

Global site tag (gtag.js) - Google Analytics