Java基础11 面向对象~继承

  • 人类

*/

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方法

public boolean equals(Object anObject) {

if (this == anObject) {

return true;

}

if (anObject instanceof String) {

String anotherString = (String)anObject;

int n = value.length;

if (n == anotherString.value.length) {

char v1[] = value;

char v2[] = anotherString.value;

int i = 0;

while (n-- != 0) {

if (v1[i] != v2[i])

return false;

i++;

}

return true;

}

}

return false;

}

思考下面代码的执行结果:

String s1 = “abcd”;

最后

看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。

开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题

注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友

最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?

互联网工程师必备的面试1000题

而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题

最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?

String s1 = “abcd”;

最后

看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。

开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题

注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友

[外链图片转存中…(img-zfSNKjpO-1714349649657)]

互联网工程师必备的面试1000题

而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题

[外链图片转存中…(img-8CEuUTrX-1714349649658)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值