关键词:
前言
Java语言有三大重要的特性,分别是继承、多态和封装。今天我们就来聊聊继承,继承是复用程序代码的有力手段,使用继承我们会少写许多代码,也可以让我们在写代码的时候逻辑变得更加清楚。
继承的基本语法
在Java语言中,用“extends”关键字来表示一个类继承了另一个类,例如: public class Sub extends Base{ ... } ,以上代码表明Sub类继承了Base类,我们说Sub类是Base类的子类,Base类是Sub类的父类。
那么Sub类到底继承了Base类的那些东西呢?这需要分情况讨论:
- 当Sub和Base位于同一个包中时:Sub继承了Base中的public、protected和默认访问级别的成员变量和成员方法。
- 当Sub和Base位于不同的包中时:Sub继承了Base中的public和protected访问级别的成员变量和成员方法。
以下程序分别演示了上述两种情况Sub继承Base的那些成员变量和方法:
//先创建父类Base public class Base{ public int publicVarOfBase = 1; //public访问级别 private int privateVarOfBase = 1; //private访问级别 int defaultVarOfBase = 1; //默认访问级别 protected void methodOfBase(){} //protected访问级别 }
//创建子类Sub继承父类Base public class Sub extends Base{ public void methodOfSub(){ publicVarOfBase = 2; //合法,可以访Base的public类型的变量 defaultVarOfBase = 2; //合法,可以访问Base的默认访问级别的变量 privateVarOfBase = 2;//非法,不能访问Base的private类型的变量 methodOfBase(); //合法,可以访问Base的protected类型的方法 } public static void main(String[] args){ Sub sub = new Sub(); sub.publicVarOfBase = 3; //合法,Sub继承了Base的public类型的变量 sub.privateVarOfBase = 3; //非法,Sub没有继承Base的private类型的变量 sub.defaultVarOfBase = 3; //合法,Sub继承了Base的默认访问级别的变量 sub.methodOfBase(); //合法,Sub继承了Base的protected类型的方法 sub.methodOfSub(); //合法,这是Sub本身的实例方法 } }
Java语言不支持多继承,也就是说一个类只能直接继承另一个类。这里之所以说“一个类直接继承另一个类”是因为该类还可以有多个间接的父类,例如以下代码表明B类继承C类,A类继承了B类,C类是A类的间接父类:
public class A extends B{...} public class B extends C{...}
另外,所有Java中的类都直接或者间接地继承了java.lang.Object类,它是所有类的祖先,这个类中定义了所有的Java对象都具有的相同的行为。所以,在定义一个类时,没有使用“extends”关键字,就不能草率地以为该类没有继承别的类,而是表明这个类直接继承了Object类。
java之面向对象概述,类,构造方法,static,主方法,对象
一、面向对象概述面向过程“面向过程”(ProcedureOriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。“面向过... 查看详情
java基础之面向对象
Java基础之面向对象一.什么是面向对象?面向对象就是指以属性/特征和行为的观点来分析现实世界中事物的方式。二.什么是面向对象编程?面向对象编程就是指先使用面向对象的观点进行分析后再使用面向对象的编程语言... 查看详情
scala编程入门---面向对象编程之trait
Scala中Trait是一种特殊概念首先我们可以将Triat做为接口来使用,此时的Triat就与java中的接口非常相似在Triat中可以定义抽象方法,就与抽象类中的抽象方法一样,只要不给出具体的实现即可类可以使用extend是关键字来继承Triat,... 查看详情
javascript面向对象编程高速构建继承关系之整合原型链
前面我们铺垫了非常多细节。是为了让大家更加明晰prototype的使用细节;如今能够将前面的知识整合起来,写一个函数用于高速构建基于原型链的继承关系了:functionextend(Child,Parent){ varF=function(){}; F.prototype=Parent.prototype; Child.proto... 查看详情
javascript面对对象编程之继承
...nbsp; 上一篇博客中为大家介绍了javascript面向对象编程原则的封装,今天为大家介绍继承。在javascript中没有类的概念,全部不能像c#。java语言那样。直接的用类去继承类。比方如今有比方。如今有一个"动物&q... 查看详情
08java面向对象之继承
JavaSE基础之八08Java面向对象之继承①对象与对象之间的关系关联关系:最弱的一种关系(学生类中包含了老师)继承关系:比较强的一种关系,is-a,你能够用:什么是什么说通聚合关系:比较强的关系,聚集和组合,什么是什... 查看详情
java面向对象之继承
1继承:Java是的单继承,意味着一个类只能从一个类继承(被继承的类叫做父类【基类】),Java中的继承使用extends关键2.当生成子类对象时,Java默认首先调用父类的不带参数的构造方法,然后执行该构造方法,生成父类对象。接... 查看详情
java面向对象之继承(代码片段)
继承(Java面向对象三大特征之一)目录继承(Java面向对象三大特征之一)1.1、使用继承1.1.1编写父类A1.1.2编写子类B,继承父类A注意1.2继承的特性1.3子类继承父类的什么?不能被继承的父类成员:1.4super和this关键字1.5继承条件下... 查看详情
java学习面向对象之继承
继承(面向对象特征之一)好处:1:提高了代码的复用性。2:让类与类之间产生了关系,提供了另一个特征多态的前提。 父类的由来:其实是由多个类不断向上抽取共性内容而来的。java中对于继承,java只支持单继承。java... 查看详情
java面向对象之继承
在java中,面向对象毫无疑问是java的重中之重,今天我们来看一看java面向对象的三大特性之一继承。 首先我们来了解一下类的结构是怎样的? 类中主要有成员属性,成员方法,静态属性,静态方法,构造方法(暂不... 查看详情
java面向对象之继承.(代码片段)
1:继承的定义: Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。2:关键字:extends:继承3:格式形式:publicclassAextendsB A:代... 查看详情
面向对象之封装和继承
面向对象的三大特征:封装、继承、多态。面向对象编程之封装: 封装就是把对象的属性和行为结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节有一个最大的优点:信息隐蔽,封装即隐藏。PHP 中通过将数据封... 查看详情
java面向对象编程三大特征-多态
Java面向对象编程三大特征-多态本文关键字:Java、面向对象、三大特征、多态多态是面向对象编程的三大特征之一,是面向对象思想的终极体现之一。在理解多态之前需要先掌握继承、重写、父类引用指向子类对象的相关概念,... 查看详情
java面向对象之继承(代码片段)
Java三大特性之继承本篇内容1.继承的含义2.继承的运用3.顶级父类:Object4.小结1.继承的含义 继承是Java三大特性之一。何为继承?其实继承在我们现实生活中类似于父与子,在一个家庭中,有继承家... 查看详情
面向对象三大特征之继承,多态
//面向对象三大特性//继承//概念:子类可以继承父类的一切//方法重写:在子类里面对父类的方法进行重写//特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类//override:重写//overload:重载,编程多态//parent::值... 查看详情
java面向对象基础之继承
Java面向对象基础之继承1.包==文件夹使用步骤:1.1自定义包----创建一个包src—new–package1.2包命名com.开头—com.模板名比如:com.test包的导入----不同包中的类互相调用语法:import<包名>.<类名>示例:imp... 查看详情
java面向对象基础之继承
Java面向对象基础之继承1.包==文件夹使用步骤:1.1自定义包----创建一个包src—new–package1.2包命名com.开头—com.模板名比如:com.test包的导入----不同包中的类互相调用语法:import<包名>.<类名>示例:imp... 查看详情
python--面向对象之三个特性:封装继承多态(代码片段)
一、面向对象简介1、面向对象不是所有的情况都适用2、面向对象编程 a.定义类 class类名: def方法1(self,参数名): 方法体 b.根据类创建对象,使用对象去执行类中的方法 ... 查看详情