简谈Java语言的继承
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语言的继承的更多相关文章
- 简谈Java语言的封装
简谈Java语言的封装 封装的定义 封装将复杂模块或系统的逻辑实现细节隐藏,让使用者只需要关心这个模块或系统怎么使用,而不用关心这个模块或系统是怎么实现的. 在面向对象的的编程中,我们一般通过接口来描 ...
- 简谈java 中的 继承和多态
继承(extends) : 1:object 是所有类的父(基)类. 2:子类继承父类所有的内容除了(private修饰的和构造方法). 3:子类在手动创建构造方法时,必须调用父类构造方法. 4:在J ...
- 浅谈Java语言环境搭建-JDK8
title: 浅谈Java语言环境搭建-JDK8 blog: CSDN data: Java学习路线及视频 1.What's the JDK,JRE JDK(Java Development Kit ...
- 【Java学习笔记之十六】浅谈Java中的继承与多态
1. 什么是继承,继承的特点? 子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承方法,使得子类具有父类相同的行为. 特点:在继承关系中,父类更通用.子类更具体.父类具有更 ...
- 简谈Java的join()方法
join()是Thread类的一个方法.根据jdk文档的定义: public final void join()throws InterruptedException: Waits for this ...
- 简谈java的split
最近都在处理视频音频,今天在合成音频视频时为了给合成的新文件换个新名字,我打算获取了之前的视频名称,用split来分割出不带后缀的名字,再自己加上后缀. 众所周知split可以分割由某种字符分段的St ...
- 简谈Java的join()方法(转)
join()是Thread类的一个方法.根据jdk文档的定义: public final void join()throws InterruptedException: Waits for this ...
- 简谈Java传值传引用
本随笔旨在强化理解传值与传引用 如下代码的运行结果 其中i没有改变,s也没有改变. 但model中的值均改变了. i :100s :hellomodel :testchangemodel2 :ch ...
- 简谈 Java 中的泛型通配符
很好的一篇文章https://zhuanlan.zhihu.com/p/26681625
随机推荐
- 【蓝桥杯C组】备赛基础篇之前缀和算法
算法介绍: 设a为数组,a[i]中储存的是前i 个数(包括自己)的总和,相当于我们中学学过的前N项和,那么,弄成这样的好处是什么呢?假如我们要多次访问一段区间的总和,难道每次都加一次进行重复运算吗?? ...
- python之logging基础入门
博客学习至:https://www.cnblogs.com/Nicholas0707/p/9021672.html#_label0 https://www.cnblogs.com/dream66/p/ ...
- python selenium unittest Fixture(setUp/tearDown)笔记
Fixture用途: 1.做测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用fixture来实现 2.测试用例的前置条件可以使用fixture实现 Fixture使用: ...
- js实现图片幻灯片效果
其效果是点击图片切换到下一张图片 首先准备五张图片 <ul class="imge"> <li><img src="images/1.jpg ...
- 【雕爷学编程】Arduino动手做(49)---有源蜂鸣器模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...
- POJ3225
题目链接:https://vjudge.net/problem/POJ-3225 解题思路:这道题要是不看题解以本渣新现在的实力确实是做不出来. 以区间为基础建立线段树. 当X=‘U', 将区间T内的 ...
- 5.Linux的启动过程和系统指令
1.Linux的启动过程 作为一台计算机,启动它的第一步是加电自检,也就是给电脑用电然后按电源按钮开机.加电之后的运行步骤:(1)加载bios,然后检查硬盘信息 (2)读取MBR的配置(MBR就是硬盘 ...
- 应小姐姐要求,整理常用Git操作命令,她都学会了,你确定不收藏
前言 因为个人原因,转化了部门之后已经很久没有接触过开发层级的东西了,好多东西基本都忘记了,但是新的部门有时候会用到相应的研发部的代码和文档手册,所以耳边就充斥这一句话 这个为什么下载不了?这个为什么 ...
- python2.7入门 01
进入python官网 http://www.python.org/download/ 下载python2.7.x 版 下载安装后配置环境变量 在path中——>>>把安装路 ...
- nvm的安装,安装node,npm
先说说我为什么使用nvm吧 最近在搞react-native,就碰到了很多坑,其中就有node带来的坑,当你运行react-native start (这是rn启动服务器的命令)就会报一个正则的错误, ...