- 人类
*/
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.属性
- 调用父类的方法
super.方法(…)
- 调用父类的构造方法
super(参数);
super和this的区别:
-
this代表当前类的对象,super代表父类的对象
-
this可以调用当前类的属性和方法(包括自身特有和父类的)
super只能调用父类的属性和方法
- 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);
注意:
-
子类如果不写super,系统会默认调用父类无参的构造方法
-
调用父类有参构造方法时,子类必须使用super显式的调用父类的构造方法
-
super()必须出现在子类构造方法的第一行
-
构造方法的调用,总是先调用父类的,再调用子类的
==================================================================
什么是方法重写?
子类中的方法可以覆盖父类中的方法
方法重写的特点:
-
方法在子类和父类中
-
方法名相同
-
参数、返回值都相同
-
子类方法的访问修饰符不能比父类更严格
学生类重写父类的eat方法
//重写父类的方法
public void eat(){
System.out.printf(“%d的%s同学在吃KFC\n”,this.getAge(),this.getName());
}
Student stu1 = new Student(“001”,“张三”,20);
stu1.eat();
=====================================================================
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)]