最后
现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。
所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。
public Bird(String name) {
this.name = name;
}
public void eat(String food) {
System.out.println(this.name+“正在干饭,并表示”+food+“很不错”);
}
public void fly() {
System.out.println(this.name + “正在飞 ︿( ̄︶ ̄)︿”);
}
}
由上面代码可以发现,该代码存在大量的冗余代码,如:Animal类,Cat类,Bird类相比较可以发现该3个类都具备相同的eat方法,而且行为完全是 一样的,都有相同的属性name而且意义相同,这种代码维护性不高(维护性主要是后期需要修改的时候,就需要修改很多的代码,容易出错),所以要从根本上解决这代码的问题,就需要继承,以达到代码重用的效果。
使用继承后的代码:
class Animal {
public String name;
public Animal(String name) {
this.name = name;
}
public void eat(String food) {
System.out.println(this.name+“正在干饭,并表示”+food+“很不错”);
}
}
// Cat.java
class Cat extends Animal{
public Cat(String name) {
// 使用 super 调用父类的构造方法.
super(name);
}
}
// Bird.java
class Bird extends Animal{
public Bird(String name) {
super(name);
}
public void fly() {
System.out.println(this.name + “正在飞 ︿( ̄︶ ̄)︿”);
}
}
什么是多态
多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。
向上转型
通常来说,向上转型表示往父类的方向转
在之前代码的基础上,写一个例子
Bird bird = new Bird(“圆圆”);
Animal bird2 = bird;
// 或者写成下面的方式
Animal bird2 = new Bird(“圆圆”);
此时 bird2 是一个父类 (Animal) 的引用, 指向一个子类 (Bird) 的实例. 这种写法称为 向上转型.
动态绑定
当子类和父类中出现同名方法的时候, 再去调用会对前面的代码稍加修改,如以下代码:
class Animal {
public String name;
public Animal(String name) {
this.name = name;
}
public void eat(String food) {
System.out.println(“我是一只小动物”);
System.out.println(this.name+“正在干饭,并表示”+food+“很不错”);
}
}
// Cat.java
class Cat extends Animal{
public Cat(String name) {
super(name);
}
@Override
public void eat(String food) {
System.out.println(“我是一只小猫”);
System.out.println(this.name+“正在干饭,并表示”+food+“很不错”);
}
}
// Bird.java
class Bird extends Animal{
public Bird(String name) {
super(name);
}
@Override
public void eat(String food) {
System.out.println(“我是一只小鸟”);
System.out.println(this.name+“正在干饭,并表示”+food+“很不错”);
}
public void fly() {
System.out.println(this.name + “正在飞 ︿( ̄︶ ̄)︿”);
}
}
public class Main{
public static void main(String[] args){
Animal animal1 = new Animal(“圆圆”);
animal1.eat(“谷子”);
System.out.println(“====================”);
Animal animal2 = new Bird(“扁扁”);
animal2.eat(“谷子”);
}
}
我们发现:
animal1 和 animal2 虽然都是 Animal 类型的引用, 但是 animal1 指向 Animal 类型的实例, animal2 指向Bird 类型的实例.
针对 animal1 和 animal2 分别调用 eat 方法, 发现 animal1.eat() 实际调用了父类的方法, 而animal2.eat() 实际调用了子类的方法.
因此, 在 Java 中, 调用某个类的方法, 究竟执行了哪段代码 (是父类方法的代码还是子类方法的代码) , 要看究竟这个引用指向的是父类对象还是子类对象. 这个过程是程序运行时决定的(而不是编译期), 因此称为动态绑定
向下转型
向上转型是子类对象转成父类对象, 向下转型就是父类对象转成子类对象. 相比于向上转型来说, 向下转型没那么常见,但是也有一定的用途.
class Animal {
public String name;
public Animal(String name) {
this.name = name;
}
public void eat(String food) {
System.out.println(“我是一只小动物”);
System.out.println(this.name+“正在干饭,并表示”+food+“很不错”);
}
}
// Cat.java
class Cat extends Animal{
public Cat(String name) {
super(name);
}
@Override
public void eat(String food) {
System.out.println(“我是一只小猫”);
System.out.println(this.name+“正在干饭,并表示”+food+“很不错”);
}
}
// Bird.java
class Bird extends Animal{
写在最后
可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。
上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源
(img-XX40V7pR-1715639890103)]
[外链图片转存中…(img-abG8IqkJ-1715639890103)]
上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源