Java语言的继承

这里简谈Java语言的三大特性之二——继承。

Java语言的三大特性是循序渐进的、是有顺序性的,应该按照封装-->继承-->多态这样的顺序依次学习

继承的定义

百度百科中这样定义继承:继承是面向对象最显著的一个特性。它是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。举个通俗易懂的例子:

动物是自然界中某些生物的统称,(初中生物书上也有“界门纲目科属种”),在动物之下,又有许多种类,比如说猫、狗、老虎、狮子等等,这些实体的动物既拥有所有动物的特性,又有自身独有的一些特性,比如老虎头上有个“王”字等等。

可以说继承是类和类之间的一种关系,继承关系的两个类,一个为父类(基类),另一个为子类(派生类)。子类继承父类,使用关键字:extends,子类和父类之间,从意义上来讲应该具有“is a”的关系,例如上述的例子中:Tiger is an animal, Cat is an animal ......

除此之外,类和类之间的关系还有:依赖、组合、聚合等等,需要注意的是,Java中类的继承只有单继承,没有多继承

继承的关键字

extends

extends的意思是“扩展”,具体说就是子类是父类的扩展(即派生类是基类的扩展)。

使用时也比较容易,创建新类时,在类名的后面加上extends,再加上继承的父类名即可:

//父类
public class animal{
   //父类的相关属性及方法
}
//子类
public class tiger extends animal{
   //子类的相关属性及方法
}

继承的代码示例

首先创建一个父类:Animal类

package 继承示例;

public class Animal {
   public void breath(){
       System.out.println("animal can breath......");  //父类方法
  }
}

再创建一个子类:Tiger类,用来继承父类

package 继承示例;

public class Tiger extends Animal {
   public void eatMeat(){
       System.out.println("Tiger will eat meat......");    //子类方法
  }
}

最后创建一个测试主类:test类

package 继承示例;

import java.util.function.ToDoubleBiFunction;

public class test {
   //这是一个测试类
   public static void main(String[] args) {
       Animal am=new Animal();
       am.breath();    //父类对象访问父类方法,没有问题
//       am.eatMeat(); //父类对象访问子类方法,编译报错!表示无法访问到

       System.out.println("============================================");
       Tiger tg=new Tiger();
       tg.breath();    //子类对象访问父类方法,没有问题
       tg.eatMeat();   //子类对象访问子类方法,没有问题
  }
}

测试结果如下:

animal can breath......

=================================

animal can breath......

Tiger will eat meat......

由此可见,继承时,子类可以访问父类和子类的方法,父类只能访问父类的方法。

注意

  • 父类的private方法不能被继承

  • 父类的static方法不能被继承

  • 父类的final方法不能被继承

  • 父类的构造方法不能被继承

  • object类是所有类的父类(祖宗类)

简谈Java语言的继承的更多相关文章

  1. 简谈Java语言的封装

    简谈Java语言的封装 封装的定义 封装将复杂模块或系统的逻辑实现细节隐藏,让使用者只需要关心这个模块或系统怎么使用,而不用关心这个模块或系统是怎么实现的. 在面向对象的的编程中,我们一般通过接口来描 ...

  2. 简谈java 中的 继承和多态

    继承(extends) : 1:object 是所有类的父(基)类. 2:子类继承父类所有的内容除了(private修饰的和构造方法). 3:子类在手动创建构造方法时,必须调用父类构造方法. 4:在J ...

  3. 浅谈Java语言环境搭建-JDK8

    title: 浅谈Java语言环境搭建-JDK8 blog: CSDN data: Java学习路线及视频 1.What's the JDK,JRE JDK(Java Development Kit ...

  4. 【Java学习笔记之十六】浅谈Java中的继承与多态

    1.  什么是继承,继承的特点? 子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承方法,使得子类具有父类相同的行为. 特点:在继承关系中,父类更通用.子类更具体.父类具有更 ...

  5. 简谈Java的join()方法

    join()是Thread类的一个方法.根据jdk文档的定义: public final void join()throws InterruptedException: Waits for this ...

  6. 简谈java的split

    最近都在处理视频音频,今天在合成音频视频时为了给合成的新文件换个新名字,我打算获取了之前的视频名称,用split来分割出不带后缀的名字,再自己加上后缀. 众所周知split可以分割由某种字符分段的St ...

  7. 简谈Java的join()方法(转)

    join()是Thread类的一个方法.根据jdk文档的定义: public final void join()throws InterruptedException: Waits for this ...

  8. 简谈Java传值传引用

    本随笔旨在强化理解传值与传引用   如下代码的运行结果 其中i没有改变,s也没有改变. 但model中的值均改变了. i :100s :hellomodel :testchangemodel2 :ch ...

  9. 简谈 Java 中的泛型通配符

    很好的一篇文章https://zhuanlan.zhihu.com/p/26681625

随机推荐

  1. 接口(API)测试理念

    什么是接口测试 接口测试就是针对软件对外提供服务的接口的输入输出进行测试,以及接口间相互逻辑的测试,验证接口功能与接口描述文档的一致性: 测试的重点是检查数据交互.传递.和控制管理过程以及系统间的相互 ...

  2. ql的python学习之路-day9

    前言:本节主要学习装饰器 一.装饰器 定义:本质上是个函数,用来装饰其他函数:(就是为其他函数添加附加功能) 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 以上两点可以总 ...

  3. openjdk tomcat 安装

    1 jdk 这里用openjdk yum install java-1.6.0-openjdk export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6 ...

  4. PG 更新统计信息

    http://blog.chinaunix.net/uid-24774106-id-3802225.html 一.vacuum的效果: 1.1释放,再利用 更新/删除的行所占据的磁盘空间. 第一点的原 ...

  5. mysql小白系列_01 原理

    1.什么是MVCC?有什么作用? Multi-Version Concurrency Conrol 多版本并发控为解决数据库并发读写可能会出现不一致数据的情况,需要实现数据库的并发访问控制,写时复制产 ...

  6. CF820D Mister B and PR Shifts

    题目链接:http://codeforces.com/problemset/problem/820/D 题目大意: 给出一个\(n\)元素数组\(p[]\),定义数组\(p[]\)的误差值为\(\su ...

  7. PHP基础-自定义函数-变量范围-函数参数传递

    一.自定义函数    function 函数名([形式参数1,形式参数2,....形式参数n]){        //各种PHP代码....        //......        return ...

  8. 循序渐进VUE+Element 前端应用开发(2)--- Vuex中的API、Store和View的使用

    在我们开发Vue应用的时候,很多时候需要记录一些变量的内容,这些可以用来做界面状态的承载,也可以作为页面间交换数据的处理,处理这些内容可以归为Vuex的状态控制.例如我们往往前端需要访问后端数据,一般 ...

  9. C#日志记录类

    public class WriteLog { /// <summary> /// 将错误写入文件中 /// </summary> /// <param name=&qu ...

  10. 将`VuePress`建立的博客部署到GitHub或Gitee上

    将VuePress建立的博客部署到GitHub或Gitee上 在上一篇中,我们详细介绍了如何利用VuePress搭建起个人博客系统,但这只是在本地debug启动的,接下来,我们把它部署到Github网 ...