博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文科生北海糖的:Java之路——继承
阅读量:4179 次
发布时间:2019-05-26

本文共 1924 字,大约阅读时间需要 6 分钟。

01Java中的继承

1、继承的概念

继承是类和类的关系,是一种“is a”的关系
Java中的继承是单继承

2、继承的好处:

子类拥有父类所有的属性和方法;
实现代码的复用;
注意:private修饰的无效****无法继承

3、语法规则

class子类extends父类
例:classc Dog extends Animal{
}
Dog是子类,Animal是父类
动物和狗是继承关系。

任务注意:

在package包中修改子类的名字,可在菜单栏的refactor中的rename中选择修改;
如果父类中用了private ,那么就算私有,子类不可以调用

1、首先创建一个父类,声明属性:

在这里插入图片描述

2、然后在创建它的子类Car, 创建类时选择superclass继承它;自动会显示extend函数。如下图:

在这里插入图片描述

3、然后在创建一个main函数,创建对象,赋值,再调用方法,就可以继承父类vehicle的所有代码。

在这里插入图片描述

02Java中的方法重写

1、什么是方法的重写:当子类继承父类的方法不满意时,父类的方法是可以重写的,还是会优先调用子类的方法。

2、语法规则:
返回值类型
参数值类型及个数
方法名
都要与父类继承的方法相同,才叫方法的重写。

03继承的初始化对象

继承的初始化顺序

1.初始化父类然后再初始化子类
2、先执行初始化对象中属性,再执行构造方法的初始化

初始化顺序见下图:

在这里插入图片描述
从父类到子类,从对象、属性到构造方法。

03final关键字

最终的。

final可以修饰类、方法、属性和变量
修饰类,则表明该类不允许被继承
修饰方法,则该方法不允许被覆盖(重写)
修饰属性,则该类不会进行隐式的初始化(类的初始化属性必须有值)
或者 在构造方法中赋值(但只能选其一)
final修饰变量,则改变量只能赋一次值,即为常量。

————————————————————————2019/7/12 未完待续——————————————————————

04Super关键字的使用

01super关键字

在对象的内部使用,可以代表父类的对象。

1.访问父类的属性 super.age;

2.调用父类的方法 super.eat();
在main的method方法中直接输入子类的属性名,就能得到子类属性。
在main的method方法中直接输入子类的方法名。

super的应用:子类的构造过程中必须调用其父类的构造方法。

如果子类的构造方法中没有显示调用父类的构造方法,

则系统默认调用父类无参的构造方法。
如果显示的调用构造方法,必须在子类的构造方法的第一行。

如果子类的构造方法中既没有显示调用父类的构造方法;

而父类又没有无参的构造方法,则编译出错。
**

在这里插入图片描述

05Object类

Object类是所有的类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Objectl类。

Object类中的方法,适合所有的子类。

1、toString()方法

在Object类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)

可以通过重写 toString()方法表示对象的属性

2、equals()方法

比较的对象是:对象的引用是否指向同一块内存地址。
Dog dog = new Dog()

生活中相等的两种情况:

1、昨天我丢了个手机,你手里的手机和我昨天丢的那个手机一模一样。
2、我昨天买了个3星手机,和你手里的手机一模一样,两个对象的值都一样。

equals中比较的通常是前者,比较的对象是一个手机。生活中往往比较的是后者。比较两个对象的值是否是一样,所以要进行重写。

编译如下:
在这里插入图片描述
在这里插入图片描述
上面是第一种情况,new了两次,相当于开辟了两个内存区。判断两个对象是否相同,因为两个对象的内存地址是不相同的,所以两个对象不同。

第二种情况,比较两个对象的值。在子类界面中,重新写equals方法,在resource菜单栏中寻找equal可以自动生成需要比较的值的代码。

在这里插入图片描述
判断引用的两个值是否相同:
if(this == obj)表明两个对象的地址相同
if(obj == null)null 无效的;等于零的 表示另外一个对象是空值。
if(getClass()= obi.getClass())

obj.getClass() 表示类对象:年龄,姓名,身高,学历,体重,疾病 这些属性名,变量 方法名,里面的代码是什么。

new一个对象时得到的是类的对象,如obj.getClass()表示类的对象。
如果这个类的对象调用Class方法表示类的对象
类的对象,表示属性值的信息,类的对象数据的信息。

转载地址:http://pfeai.baihongyu.com/

你可能感兴趣的文章
再见了!锤子!!!
查看>>
LeetCode 全站第一,牛逼!
查看>>
为什么全网都在劝你学Java、Python,而不是C++?
查看>>
卧槽!阿里巴巴《算法笔记》开源了,完整版PDF开放下载!
查看>>
百度的骚操作。。。
查看>>
蔚来,牛X!
查看>>
微信悄悄新出了个野心很大的App
查看>>
微信红包封面制作小程序开放,人人都可免费制作了!!!
查看>>
13000亿!目瞪口呆!
查看>>
腾讯,搞了一个大事!
查看>>
入职腾讯第九年,我辞职了
查看>>
17 张程序员壁纸(使用频率很高)
查看>>
送一台全新手机,手慢无~
查看>>
全球顶级的14位程序员!膜拜!
查看>>
太赛博朋克!华为天才少年自制B站百大Up奖杯,网友:技术难度不高,侮辱性极强...
查看>>
华为正式宣布养猪,网友沸腾:支持华为自救!
查看>>
真的有必要读研究生吗?
查看>>
一个员工的离职成本到底有多恐怖!
查看>>
微软骂人:请勿TM关闭......
查看>>
B站python+数据分析精华汇总!速领,免费,一会删!
查看>>