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. 编写高质量代码改善C#程序的157个建议——建议122:以<Company>.<Component>为命名空间命名

    建议122:以<Company>.<Component>为命名空间命名 建议以<Company>.<Component>为程序集命名,比如Microso ...

  2. hdu2653之BFS

    Waiting ten thousand years for Love Time Limit: 10000/2000 MS (Java/Others)    Memory Limit: 32768/3 ...

  3. linux命令の删除文件和文件夹 复制粘贴文件和文件夹

    声明:此博文来自百度经验http://jingyan.baidu.com/article/642c9d34dcba80644a46f72d.html,谢谢分享! linux删除目录很简单,很多人还是习 ...

  4. 底部导航栏使用BottomNavigationBar

    1.github地址 https://github.com/zhouxu88/BottomNavigationBar 2.基本使用 2,1添加依赖 implementation 'com.ashokv ...

  5. centos7 安装dnf包管理器和常用命令

    Installing DNF Currently the DNF package comes from the EPEL repository, so if your Linux system is ...

  6. WebCalendar.js

    var cal;   var isFocus=false; //是否为焦点   var pickMode ={       "second":1,       "minu ...

  7. Perl+OpenGL 重绘inkscape生成的svg矢量图

    Perl+OpenGL 重绘inkscape生成的svg矢量图 还不够完善,先挖个坑,后面慢慢填 Code: [全选] [展开/收缩] [Download] (Untitled.pl) =info A ...

  8. [Perl][文件操作]判断文件是否为符号链接(Unicode路径)

    Win32API::File 判断文件/文件夹是否为符号链接 Win32::Unicode 好像无法做这方面的判断,只能判断是否为目录.文件.文件是否存在. Win32API::File 则支持 Ge ...

  9. Django-01Django简介

    1 MVC与MTV模型 MVCWeb服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业 ...

  10. 2.ECMAScript 5.0

    JS的引入方式 内接式 <script type="text/javascript"> </script> 外接式 <!--相当于引入了某个模块--& ...