《java学习笔记》之面向对象--继承,方法重写,多态

本文详细介绍了Java中的方法重写和多态概念,以及它们在实际编程中的应用。强调了Java面试中基础的重要性,特别是技术原理的理解和广度,以及清晰的思路。提供了一线大厂面试题作为学习资源和评估自身技术水平的工具。
摘要由CSDN通过智能技术生成

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
方法重写


子类继承父类,当发现父类的方法无法完成子类的业务需求时,需要重新对父类的方法进行覆盖重写。

//实现方法重写

public class OverrideTest02 {

public static void main(String[] args) {

//创建对象

People people =new People(“小明”);

//没有这样的构造方法,所以说构造方法不继承

//Chinese chinese =new Chinese(“小红”);

Chinese chinese =new Chinese();

American american =new American();

people.speak();//小明 is speaking

chinese.speak();//null is speaking Chinese

american.speak();//null is speaking English

}

}

class People {

//属性

private String name;

//构造方法

public People(){

}

public People(String name){

this.name = name;

}

//setter and getter

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

//方法

public void speak(){

System.out.println(this.getName() + " is speaking");

}

}

//中国人类

class Chinese extends People{

public void speak(){

System.out.println(this.getName() + " is speaking Chinese");

}

}

//美国人类

class American extends People{

public void speak(){

System.out.println(this.getName() + " is speaking English");

}

}

多态基本语法


public class Test01 {

public static void main(String[] args) {

//父类型的引用指向子类型

//在编译阶段,编译器看这是一个Animal类型的对象,就去Animal的字节码文件看,发现其中有.move()的方法,所以编译通过

//在运行的时候发现真正参与运行是Fish类的,就执行Fish类的move()方法

Animal fish =new Fish();

fish.move();//Fish is swimming

//如果是没有继承关系的类可以多态吗

//Animal dog =new Dog();

//不可以,会报错

Animal bird =new Bird();

bird.move();//Bird is flying

//如果要执行子类的特有方法怎么办?

//bird.sing();//报错,因为在编译阶段,编译器发现他是Animal类型的对象,就去Animal的字节码文件看,发现没有sing()方法,就报错了

//这个时候就要向下转型了

//Bird bird = (Bird) bird; 报错,bird已经被声明了

Bird bird1 =(Bird) bird;

bird1.sing();//Bird is singing

//向下转型也有风险

/*编译器检测到这个fish引用是Animal类型,

而Animal和Cat之间存在继承关系,所以可以向下转型。

编译没毛病。

运行阶段,堆内存实际创建的对象是:fish对象。

在实际运行过程中,拿着fish对象转换成Bird对象

就不行了。因为Bird和Fish之间没有继承关系。

*/

//java.lang.ClassCastException

/*Bird bird2 =(Bird) fish;

bird2.sing();*/

//如何避免这个问题呢?

if(fish instanceof Bird){

Bird bird2 =(Bird) fish;

bird2.sing();

}else{

System.out.println(“不能向下转型”);

}

//不能向下转型

/*

  • 程序员要养成一个好习惯:

任何时候,任何地点,对类型进行向下转型时,一定要使用

instanceof 运算符进行判断。(java规范中要求的。)

这样可以很好的避免:ClassCastException*/

}

}

父类Animal

//动物父类

public class Animal {

public void move(){

System.out.println(“Animal is moving”);

}

}

//不继承Animal

public class Dog {

public void move(){

System.out.println(“Dog is running”);

}

}

public class Fish extends Animal {

@Override

public void move() {

System.out.println(“Fish is swimming”);

}

}

//继承Animal

public class Bird extends Animal{

public void move(){

System.out.println(“Bird is flying”);

}

//特有的方法

public void sing(){

总结:心得体会

既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。

学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。

面试大厂,最重要的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。

最后,上面这些大厂面试真题都是非常好的学习资料,通过这些面试真题能够看看自己对技术知识掌握的大概情况,从而能够给自己定一个学习方向。包括上面分享到的学习指南,你都可以从学习指南里理顺学习路线,避免低效学习。

大厂Java架构核心笔记(适合中高级程序员阅读):

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。

最后,上面这些大厂面试真题都是非常好的学习资料,通过这些面试真题能够看看自己对技术知识掌握的大概情况,从而能够给自己定一个学习方向。包括上面分享到的学习指南,你都可以从学习指南里理顺学习路线,避免低效学习。

大厂Java架构核心笔记(适合中高级程序员阅读):

[外链图片转存中…(img-m4eRkA0t-1714685945915)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值