Java 继承

继承实现:

在Java中,如果实现继承的,需要使用Java关键字——extends :

被继承的类叫做超类,继承超类的类叫子类。(一个子类亦可以是另一个类的超类)

class 子类 extends 父类  { …… }

子类也可以被成为“派生类”,父类也被称为基类(超类)

子类继承父类后,子类中可以随便的调用父类定义的属性、方法等。

class Person {

         private String name ;

         private int age ;

         private String school ;

         public void setName (String name) {

                   this.name = name ;

         }

         public setAge(int age) {

                   this.age = age ;

         }

         public String getName() {

                   return this.name ;

         }

         public int getAge() {

                   return this.age ;

         }

}

public Student extends Person {  // Student继承了父类Person

         /* Student 可以使用 Person 中定义的属性和方法 */

}

同时,子类中也可以定义新的属性和方法

class Person {

         private String name ;

         private int age ;

         public void setName (String name) {

                   this.name = name ;

         }

         public setAge(int age) {

                   this.age = age ;

         }

         public String getName() {

                   return this.name ;

         }

         public int getAge() {

                   return this.age ;

         }

}

public Student extends Person { // Student继承了父类Person

         private String school ;

         public void setSchool (String school) {

                   this.school = school ;

         }

         public void getSchool () {

                   return this.school ;

         }

}

实现继承功能:

子类可以直接将父类的操作继续使用,属于代码重用 ;

子类可以扩充定义新的属于子类的属性和方法,不改变父类原有的结构标准 ;

l  在父类中被定义为private属性的内容不可以被子类调用

继承的限制:

利用extends关键字,在大多数的i情况下不用考虑继承限制的问题;

针对于继承也有继承的要求:

1、  Java不允许多重继承。一个子类不可继承多个父类;一个子类只有一个父类,一个子类则可以是一个被继承的父类。Java不允许多继承,若想实现一个子类实现继承多个父类的功能,可以采用多层继承,即B继承A,C继承B 就实现了C继承了A和B类的功能(没有继承层数限制,但不易超过三层)。

2、  子类在继承父类的时候,严格来讲会继承父类的全部操作;但对于Private(私有)操作属于隐式继承,非私有性操作属于显式继承。【在外部调用子类时候,可以使用子类继承的父类private属性,但式在子类中则不可以使用自己继承的private属性——“只可以间接的使用子类继承父类的private私有属性,属于隐式继承,而可以直接使用子类继承父类的非私有属性,属于显式继承” 】(super)

3、  在子类对象构造之前,一定会默认调用父类的无参构造,以保证父类的对象先实例化,而后在实例化子类对象 ; 对于子类构造而言,就相当于隐含了一个“super()”——父类中没有无参构造方法,就必须在子类中使用 super() 明确调用父类的有参构造方法。【通过super()将父类需要的构造参数传给父类】super()主要作用是由子类调用父类的构造方法,故此,super必须放在子类构造方法的首行(和this()不能同时出现;且子类构造实例化前一定先实例化父类构造)

super()this()问题研究:

1、 super(参数):调用基类(父类)中的某一个构造函数(默认)

2、  this(参数):调用本类中的另一种形成的构造函数

3、  super()和this()都在构造函数第一行,但不可以同时存在

4、 super:引用当前对象的直接父类的成员(用来访问父类中的隐式继承属性和方法函数)

5、  this:表示引用当前对象名

—   this()和super()都要在构造函数的首行。

Java 继承学习的更多相关文章

  1. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  2. Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)

    1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. ...

  3. 学习博客之Java继承多态接口

    这一篇博客主要是对软工前一阶段学习的总结,主要是对Java的学习总结,包括三部分:Java的继承.多态和接口 Java的继承 继承是面向对象的三大特性之一,能够实现软件的复用. Java子类继承父类的 ...

  4. Android(java)学习笔记147:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)

    1. 有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高 ...

  5. java基础学习笔记六(继承)

    继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父 ...

  6. Java多线程学习笔记

    进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间.(只负责空间分配) 线程:进程中的一个执行单元,负责进程汇总的程序的运行,一个进程当中至少要有一个线程. 多线程:一个进程中时可以有多个线 ...

  7. Java Web 学习路线

    实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...

  8. 【09-23】js原型继承学习笔记

    js原型继承学习笔记 function funcA(){ this.a="prototype a"; } var b=new funcA(); b.a="object a ...

  9. 20145213《Java程序设计学习笔记》第六周学习总结

    20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...

随机推荐

  1. ThinkPhp数据缓存技术

    1.缓存初始化 在 ThinkPHP 中,有一个专门处理缓存的类:Cache.class.php(在Thinkphp/Library/Think/cache.class.php,其他的各种缓存类也在这 ...

  2. SQL获取本周,上周,本月,上月第一天和最后一天[注:本周从周一到周天]

    DECLARE @ThisWeekStartTime NVARCHAR(100),@ThisWeekEndTime NVARCHAR(100),--本周 @LastWeekStartTime NVAR ...

  3. (转)一个故事讲完https

    (转)一个故事讲完https 2 1  序言 今天来聊一聊https 安全传输的原理. 在开始之前,我们来虚构两个人物, 一个是位于中国的张大胖(怎么又是你?!), 还有一个是位于米国的Bill (怎 ...

  4. 用JAVA实现无等待数据库连接池

    我们都知道数据库连接是一种有限和非常昂贵的应用资源,怎样对这些资源进行高效的管理,能有效的改善整个系统的性能和健壮性.数据库连接池正是针对这个问题而提出来的. 数据库连接负责分配.释放和管理数据库连接 ...

  5. ibatis源码学习1_整体设计和核心流程

    背景介绍ibatis实现之前,先来看一段jdbc代码: Class.forName("com.mysql.jdbc.Driver"); String url = "jdb ...

  6. linux mysql 权限

    原文地址:http://www.cnblogs.com/eczhou/archive/2012/07/12/2588187.html Linux下mysql新建账号及权限设置 1.权限赋予 说明:my ...

  7. java 异步调用与多线程

    异步与多线程的区别 一.异步和多线程有什么区别?其实,异步是目的,而多 线程是实现这个目的的方法.异步是说,A发起一个操作后(一般都是比较耗时的操作,如果不耗时的操作 就没有必要异步了),可以继续自顾 ...

  8. nutch2.1+mysql+elasticsearch整合linux单机部署

    这次主要介绍下nutch2.1和mysql和elasticsearch的整合,是在单机上运行,并不是分布式部署.1.下载nutch2.1 nutch下载地址:http://labs.mop.com/a ...

  9. 基于flask的轻量级webapi开发入门-从搭建到部署

    基于flask的轻量级webapi开发入门-从搭建到部署 注:本文的代码开发工作均是在python3.7环境下完成的. 关键词:python flask tornado webapi 在python虚 ...

  10. c# ref与out的区别

     c#  ref与out的区别 相同点:都是输出参数 不同点: ref: 1.必须初始化,即:必须赋初始值: 2.有进有出: 3.用在需要被调用的方法修改调用者的引用的时候. 4.是传递参数的地址 o ...