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()都要在构造函数的首行。

最新文章

  1. 使用django开发博客过程记录2——博客首页及博客详情的实现
  2. css定位和浮动
  3. CentOS最大文件描述符限制更改
  4. jquery submit()不执行
  5. CSS 和 JS 文件合并工具
  6. Aquarium Filtration
  7. psutil模块安装指南(win与linux)
  8. x-debug配置简述 - chunyu
  9. Spring事务传递性探讨
  10. 比较三个 CSS 预处理器:Sass、LESS 和 Stylus(下)
  11. Nginx Rewrite详解
  12. 深度学习识别CIFAR10:pytorch训练LeNet、AlexNet、VGG19实现及比较(三)
  13. 文件上传控件bootstrap-fileinput的使用
  14. mybatis根据数据库表结构自动生成实体类,dao,mapper
  15. ans Single VIP LLB and SLB config
  16. python多继承中子类访问祖先类的同名成员
  17. UIAlertController简单使用
  18. sass的加减乘除
  19. bloomfilter 以及count min sketch
  20. Visual Studio 2017 取消 break mode

热门文章

  1. CodeForces 289B Polo the Penguin and Matrix (数学,中位数)
  2. git的使用和一些命令
  3. 【Windows】ASP.NET Core 部署到 IIS
  4. 设计模式8---适配器模式(Adapter)
  5. Java对称加密算法
  6. ARM汇编程序中的伪指令
  7. 负载均衡-会话保持,session同步(转载)
  8. tcxgrid控件中drag a column header here to group by that column移除方法
  9. Rabbimq必备基础之对高级消息队列协议AMQP分析及Rabbitmq本质介绍
  10. Nagios+InfluxDB+Grafana