JAVA继承学习笔记

什么是继承:

特点:

具有层次结构

子类继承了父类的属性和方法

优点:

代码的可重用性

可以轻松地自定义子类

父类的属性和方法可用于子类

设计应用程序变得更加简单

继承的java实现

继承性——在已有类的基础上,加入新的成员变量和方法后,派生出新的类

class SubClass extends SuperClass

{
     类体  …

}

构造器调用

1.      如果省略了super()语句,则父类中没有参数的构造器还是会被调用的。

2.      调用父类构造器的super()语句必须写在子类构造器的第一行,不能置于它处,否则编译时将出现错误信息。

3.      super会根据参数数目和类型,执行相对应的父类的构造器或方法。

 

Super关键字

相似点:

this()与super()均会根据所给予的参数类型与个数,正确执行相对应的构造器

在调用构造器时,this()与super()都必须写在构造器的第一行,因此,两者无法同时存在统一方法体内

不同点:

this()在同一类内调用

super()是子类调用父类的成员

 

基类object

类之源—Object 类

基类Object:所有类的祖先     

在java里,如果某一类没有指定其父类的话,则java会自动赋值改类继承自Object类

在Object子类中能够重写以下Object类的方法:

·  clone().

·  equals()/hashCode(): 这两个方法必须同时重写。

·  finalize().

·  toString(): 返回对象的字符串表示,表达的内容因具体的对象而异。

在Object子类中不能重写的方法,他们被定义成final:

·  getClass().

·  notify().

·  notifyAll().

·  wait().

 

equals()方法:

Object类的public boolean equals(objectobj)方法,比较当前对象的引用是否与参数obj指向同一个对象则返回true.

但是String,Data,File类和所有包装类(Wrapper class,如Integer ,Long等)都重写该方法,改为比较所指对象的内容。

另外,Java中的恒等运算符“==”对于引用型变量,比较的是这两个变量所指对象的地址。

所以比较两个字符串str1和str2是否相同,应该使用equals()方法,如str1.equals(str2),而不能使用“==”。

/*

解释(待更新)

*/


Protected 访问控制修饰符

如果父类的成员希望子类继承

但父类成员不希望其它包中的类访问

父类成员使用protected修饰符

防止继承

在类前加上修饰符final,可以防止类被继承

Final关键字

在类的声明中使用final

Java 允许在类的声明中使用final关键字。

被定义成final的类不能再派生子类。

 

在成员方法声明中使用final

对于类中的成员也可以定义为final。被定义成final的方法不能被重写。

/***********/

定义成final的方法可以使运行时的效率优化。

对于final方法,编译器可以产生直接调用方法的代码,从而阻止运行时刻对方法调用的动态联编(编译程序在编译阶段并不能确切知道将要调用的函数,只有在程序运行时才能确定将要调用的函数,为此要确切知道该调用的函数,要求联编工作要在程序运行时进行,这种在程序运行时进行联编工作被称为动态联编。)。

/***********/

在成员变量中使用final

如果的类的成员变量被定义成final,则变量一经赋值就不能改变,

所以可以通过声明变量并同时赋初值来定义变量,并且变量名一般大写。

例: final int NUMBER = 100;

 

1.      如果类的final变量在声明中没有赋初值,则在每个构造方法(构造器)中都 必须对该变量赋值。

2.      如果未赋值的是 局部变量,则可以在所属方法体的任何位置对其赋值,但只能赋值一次。


关于继承的一些结论

子类不能继承父类中访问权限为private的成员变量和方法

子类可以重写父类的方法,也可以重写命名与父类同名的成员变量,需注意访问控制修饰符

父类对象不能使用子类的特有成员

Java仅支持单继承

Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的

 

问题:

 

1.      一个类可以有多少个父类,Java是单继承还是多继承?

单继承。

 

2.      Object是所有Java类的基类,它定义在哪个包中?


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值