Java基础11 面向对象~继承,java源码模拟面试解析指南电子版

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

现实中的继承:

在这里插入图片描述

程序中的继承:

可以由子类继承父类的成员(属性和方法),起到代码重用的作用

特点:

  1. 程序中的类分为父类和子类

  2. 子类可以继承父类,也可以说父类派生子类

  3. 子类可以继承父类的属性和方法,是一种代码重用的机制

如何判定两个类具有继承关系呢?

子类和父类具有is a(是一种)关系,子类 is a 父类

狗 is a 动物、汽车 is a 交通工具…

继承的语法

public class 子类 extends 父类{

}

案例:学生继承人,学生可以继承人类公有的属性和方法,只需要定义自身特有的属性和方法,大大减少了重复代码的编写。

/**

  • 人类

*/

public class Person {

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public void eat(){

System.out.printf(“%d的%s在吃东西\n”,age,name);

}

}

/**

  • 学生类

*/

public class Student extends Person{

//学号

private String no;

public String getNo() {

return no;

}

public void setNo(String no) {

this.no = no;

}

public Student(){

}

public Student(String no,String name,int age) {

this.no = no;

//调用了父类的方法

this.setName(name);

this.setAge(age);

}

public void study(){

//调用了父类的方法

System.out.printf(“%d岁的学号%s的%s同学在学习Java”,this.getAge(),this.getName(),no);

}

}

public class StudentDemo {

public static void main(String[] args) {

Student stu = new Student(“001”,“张三”,20);

//调用父类方法

stu.eat();

//调用自身方法

stu.study();

}

}

在这里插入图片描述

Java中的继承的特性

  • 传递性,父类的成员可以传递给子类,以及子类的子类

  • 单根性,子类只能有一个父类

super关键字

======================================================================

super代表父类对象

作用有:

  1. 调用父类的属性

super.属性

  1. 调用父类的方法

super.方法(…)

  1. 调用父类的构造方法

super(参数);

super和this的区别:

  1. this代表当前类的对象,super代表父类的对象

  2. this可以调用当前类的属性和方法(包括自身特有和父类的)

super只能调用父类的属性和方法

  1. this可以调用自身的构造方法,super可以调用父类的构造方法

super调用父类的构造方法:

给父类添加构造方法:

public Person() {

System.out.println(“这是Person无参的构造方法”);

}

public Person(String name, int age) {

this.name = name;

this.age = age;

System.out.println(“这是Person带参的构造方法”);

}

给子类添加构造方法:

public Student(){

System.out.println(“这是Student无参的构造方法”);

}

public Student(String no,String name,int age) {

//调用了父类的构造方法

super(name,age);

this.no = no;

System.out.println(“这是Student带参的构造方法”);

}

调用子类:

Student stu = new Student();

Student stu1 = new Student(“001”,“张三”,20);

在这里插入图片描述

注意:

  1. 子类如果不写super,系统会默认调用父类无参的构造方法

  2. 调用父类有参构造方法时,子类必须使用super显式的调用父类的构造方法

  3. super()必须出现在子类构造方法的第一行

  4. 构造方法的调用,总是先调用父类的,再调用子类的

方法重写

==================================================================

什么是方法重写?

子类中的方法可以覆盖父类中的方法

方法重写的特点:

  1. 方法在子类和父类中

  2. 方法名相同

  3. 参数、返回值都相同

  4. 子类方法的访问修饰符不能比父类更严格

学生类重写父类的eat方法

//重写父类的方法

public void eat(){

System.out.printf(“%d的%s同学在吃KFC\n”,this.getAge(),this.getName());

}

Student stu1 = new Student(“001”,“张三”,20);

stu1.eat();

在这里插入图片描述

Object类

=====================================================================

Object类是Java中一切类的父类

Object类的常用方法:

  • equals 比较是否相等

  • hashCode 返回哈希代码

  • getClass 返回对象的类型信息

  • toString 返回对象的字符串信息

==和equals的区别

==对于基本类型,比较的是值;

对于引用类型,比较的是内存地址。

Object类的equals比较的也是对象的地址,因为源码中是用==实现的

public boolean equals(Object obj) {

return (this == obj);

}

对于String类型来说,equals比较的是字符内容,因为String类重写了Object类的equals方法

最后

image.png

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
也是对象的地址,因为源码中是用==实现的

public boolean equals(Object obj) {

return (this == obj);

}

对于String类型来说,equals比较的是字符内容,因为String类重写了Object类的equals方法

最后

[外链图片转存中…(img-uDwZ854P-1713411246264)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-xVMAqVn2-1713411246265)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值