十二、java继承(上)

继承: extends
让学生和person产生关系,就可以让学生使用person中的共性内容。
class Student( ) extends Person{}

继承的作用:
a.提高了代码的复用性;
b.让类与类之间产生关系,为第三个特征多态提供前提。

java支持单继承不支持多继承

多层次继承:学习一个继承体系时,先看顶层看基本功能,使用时,找体系最下面的对象。

什么时候定义继承?
答:当事务之间存在所属(is a)关系时,可以用继承。
是否具备父类中所有的东西才能继承。

对于父类中私有部分,子类是无法访问的。但是是具有的,是事物中的一部分,只是为日了提供安全性无法直接访问,但是父类中是具备的,故子类也是具备的。

super关键字——代表父类的空间, 与this很相似,this代表本类对象的引用。

特殊情况——覆盖: 子父类中出现一摸一样的方法时,子类对象运行的是子类的方法,称为覆盖。
覆盖返回值类型、函数名、参数列表都一致。

覆盖注意事项:
a.子类权限应大于等于父类(父类中的show()有public修饰,子类的show()也需要public修饰)
b.静态只能覆盖静态或被静态覆盖

创建子类对象时,父类的空参数构造函数也运行。
因为子类中所有构造函数的第一行都有一个隐式的super()语句。
调用本类中的构造函数用this,调用父类中的构造函数用super。

因为子类继承了父类中的内容,所以创建对象是必须先看父类是如何对内容进行初始化的。

当父类中无空参数构造函数,子类要访问弗雷德构造函数需要通过显示定义super语句来访问。

class Fu
{
 Fu(int x){
  System.out.println("ddd"+x);
   }
}

class Zi extends Fu
{
  zi()
  {
      //super();
      super(4);
      syso("ddwwe");
  }
}

把super(4)给换成this(4)也可以通过,因为有了this就没有super,this和super一样都得定义在第一行,但是this()引到另一个构造函数是,这个里面也会有super()。

注意:用来调用父类构造函数的super语句在子类构造函数中必须定义在第一行,因为父类初始化要先完成。

12.问题:

a.
this和super都是与调用构造函数,它们可以同时存在吗?
答:不可以,他们只能定义在第一行

b.
为什么要定在第一行?
答:因为初始化要先执行。

final关键字:

final class Fu: 即没法作为父类了。
(1).final修饰符,可以修饰类、修饰方法与变量
(2).final修饰的类不能被继承。
(3).final修饰的方法不能被覆盖。
(4).final修饰的变量是个常量,只能赋值一次。
当要求数据不变时,需定义阅读性强的名称来表示该数据,并将数据final化,被final修饰的变量,名称规范是:所有字母都大写,若由多个单词组成则需要_来分割。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 1,555评论 0 6
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 1,838评论 0 10
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,688评论 0 11
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,091评论 0 4
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,267评论 0 2