下面给大家介绍一些我自己对于Java继承的总结 希望能够帮到大家
子类
1.通过extends关键字,可以直接拥有来自于弗雷德属性和行为
(但是能不能访问要受访问修饰符的限制)
分清楚,,拥有和能不能直接操作到是两个不同的概念
2 公式: 子类 extends 父类
父亲的属性和行为 子类字自动继承; 但是子类不能继承父类的构造方法;
原因1:构造方法的语法要求是方法名必须和类名保持一致.
如果子类继承了父亲的构造,那么子类就会有一个叫父类的名的构造方法.
这一点与构造语法的语法冲突.
原因2: 构造方法的作用是产生对象的.父类和子类是分开的.
3.虽然父类的构造方法没有被子类继承,但在构造子类对象的过程中,
会先在内存中产生父类对象部分,再叠加子类特有部分,从而构造一个完整的子类对象.
也就是说new一个子类对象时,会先调用父类构造,在调用子类构造
类似于"内存叠加的方式"
4.如果子类定义了和父类一模一样的属性,那么子类对象身上会有两个该属性,一个在父类一个在子类
(1) 不应该这么设计,因为设计父类的时候已经考虑了共有,设计子类应该考虑特有.
(2) 用super.属性名 代表的是定义在父类部分的同名属性名
(3) 用this.属性名 代表的是定义在子类部分的同名属性名
5.如果子类定义了和父亲一模一样的方法呢? 这叫做方法的"重写'
它是指所有类都有的共同行为,所以我们要定义在父类中
但是,不同的子类又有不同的实现,所以我们需要在子类中重新写一次.
重写要求:方法名必须一致
参数列表必须一致
访问修饰符不能比父类更小
子类重写后的方法不能比父类重写前的方法抛出更多的异常(更多不是指的个数,二十四指的范围)
JAVA是单继承
继承的优点:
1.代码的可重用性
2.子类可以扩展父类的属性和方法
3.父亲的属性和方法可用于子类.
4.设计应用程序变得更加简单
方法的重写:子类中的方法与父类中的方法相同(方法名称 参数列表 返回类型)
方法的重载: 一个类中的方法与另一个方法相同,参数列表不同
比较两个对象是否相等
1. ==
双等号在比较的时候,始终比较的是左右两端数据的值是否相等.
假如左右两端都是引用数据类型,那么其值是引用变量所指向的对象的地址.
用"=="做比较,引用数据类型比较的是两个变量是够指向一个对象
2.使用equals方法
equals方法在比较的时候,比较的是两个对象在业务在内容上是否相等,而不是物理存放位置(引用值).
equals方法时在Object这个类里面预先定义,即认为所有的类都应该有内容比较的方法.
所以这个方法有具体子类的编写者根据业务情况,完成重写.
详情见 lovo.12day.student的更改模式
override 是一种注解类型,这个注解任务是帮助我们在编译期是否是一个正确的重写方法.
toString();
返回的一个对象的字符串描述,
在对对象直接进行字符串操作的时候,会被直接调用.
比如:直接打印一个对象
toString()同样是在Object中实现.,所以并不能确定每个子类应该用什么字符串描述,只能统一返回.
只能统一返回"全类名@16进制引用"的形势.
如果子类想要有自己的实现,那么就需要进行重写.
finalize()
实现了销毁对象,清理空间,回收资源的功能
由垃圾收集GC调用,完成JAVA所宣称的程序猿无需关心内存清理的特性.
finalize()的实现是在Object中实现,调用又是由GC调用.
所以这个方法的设计初衷不是交给我们重写的,就是为了让后面工作.
final finally finalize
final是关键字 finally是关键字 finalize是方法.
final修饰变量,变量变为常量.
final修饰方法,不能被重写,被称之为最终方法.
final修饰类,不能被继承.也就是不能产生子类,称之为最终类.终态类
final能不能修饰构造方法,因为构造方法本身就是不可变得.
finally 是语句块 表示无论是否有异常发生都会执行的语句块
this.: 指的是当前对象
1.可以访问本类自己定义的属性和行为,不受访问修饰符的限制.
2. 可以访问父类定义的属性和行为,受访问修饰符的限制.
this():指的是在本类中的构造方法中调用本类的另一个构造方法.目的: 构造方法中的代码共享
1.只能写在构造方法第一行
2.不会默认执行,必须手写指定.
super.: 当前对象的父类对象部分,通俗的讲就是:"我爸"
1.不能访问本来自己定义的属性和行为
2.可以访问父类定义的属性和行为,但是要守访问修饰符的限制
super():
在本类的构造方法中,调用父类指定的构造方法
目的:让父类的构造方法与子类的构造方法达到代码共享的效果.
1. 只能写在子类构造方法的第一行
2. 默认调用父类的无参构造
当我们调用父类对象身上被覆盖的那一部分的时候,用super.,其余时候用this.
this()和super()两者都是为了实现构造方法中的代码复用,优化.并不是必须的
以上就是我对Java继承的一些小总结 有问题的各位欢迎提出来 谢谢!