网站安装wordpress,滨江网站建设,洛阳网站建设价格低,WordPress站内搜索代码White graces#xff1a;个人主页 #x1f649;专栏推荐:Java入门知识#x1f649;
#x1f649; 内容推荐:“继承与组合#xff1a;代码复用的两种策略“#x1f649;
#x1f439;今日诗词:马踏祁连山河动,兵起玄黄奈何天#x1f439; 快去学习 #x1f338;思维导… White graces个人主页 专栏推荐:Java入门知识 内容推荐:“继承与组合代码复用的两种策略“
今日诗词:马踏祁连山河动,兵起玄黄奈何天 快去学习 思维导图 一.多态概念 多态不同对象执行同一方法产生出不同结果。 比如狗狗吃饭和猫咪吃饭同样吃饭狗狗吃狗粮猫咪吃猫粮这也是多态 二.多态实现条件 三要素 1.继承 2.子类必须要对父类方法进行重写 3.通过父类的引用调用重写的方法 这三者同时具备形成了多态 package Test1;
class Animal {String name;int age;public Animal(String name, int age) {this.name name;this.age age;}public void eat() { //父类的方法System.out.println(age 岁的 name 正在吃-----);}
}
class Dog extends Animal {public Dog(String name, int age) {super(name,age);}Override //这表明父类方法被重写了public void eat() { //子类重写父类方法System.out.println(age 岁的 name 正在吃狗粮);}
}
class Cat extends Animal {public Cat(String name, int age) {super(name, age);}Overridepublic void eat() { //子类重写父类方法System.out.println(age 岁的 name 正在吃猫粮);}
}
public class Test1 {public static void eat(Animal animal) { //Animal animal就是父类的引用animal.eat();}public static void main(String[] args) {Dog dog new Dog(狗狗, 3);Cat cat new Cat(猫猫, 4);eat(dog); ///通过父类的引用调用对应的eat方法eat(cat);}
}运行结果 三.重写和重载 重写方法名不变、参数不变、返回类型不变、内容随意(除了内容其他和父类保持一致 重载方法名不变、参数必须改变、返回类型可以改变、内容随意 可以参考下图 四.转型
1.向上转型 实际就是创建一个子类对象 语法父类类型 对象名 new 子类类型 package Test1;
class Animal {String name;int age;public Animal(String name, int age) {this.name name;this.age age;}public void eat() { //父类的方法System.out.println(父类方法);}
}
class Dog extends Animal {public Dog(String name, int age) {super(name,age);}Override //这表明父类方法被重写了public void eat() { //子类重写父类方法System.out.println(age 岁的 name 正在吃狗粮);}public void bark() {System.out.println(汪汪叫);}
}public class Test1 {public static void eat(Animal animal) { //Animal animal就是父类的引用animal.eat();}public static void main(String[] args) {Animal animal new Dog(狗狗,3);eat(animal); animal.eat(); //两者运行结果相同}
}值得注意的是向上转型之后就不能调用了子类Dog特有的bark方法了 2.向下转型 向下转型用到的方法是强制类型转换 我们来看一个实例 1.instanceof关键字 作用判断是否成功向下转型 格式对象名 instanceof 类型 五.多态与选择语句 分别用多态和选择语句实现一个画图形功能 有四种图形⚪矩形正方形三角形我们用类来描述 class Shape {public void draw() {System.out.println(画图型);}
}
class Yuan extends Shape {Override //重写public void draw() {System.out.println(⚪);}
}
class Juxing extends Shape {Override //重写public void draw() {System.out.println(矩形);}
}
class Fang extends Shape {Overridepublic void draw() {System.out.println(正方形);}
}
class San extends Shape {Overridepublic void draw() {System.out.println(三角形);}
} 选择语句实现 多态实现 六.重写方法的调用 我们来看一下面的坑爹例子 package Test1;
class B {public B() {func(); //构造方法中调用func方法}public void func() {System.out.println(B.func());}
}
class D extends B {private int num 1;Overridepublic void func() { //子类重写了父类的func方法System.out.println(D.func() num);}
}
public class Test1 {public static void main(String[] args) {D d new D();}
}运行结果和分析 温馨提示 尽量不要在构造方法中调用其他方法 以上就是这篇文章的所有内容了 谢谢阅读本文希望你能从中获得一些启发和思考 三.结语美图分享 ✨谢谢你的阅读和耐心祝愿你在编程的道路上取得更多的成功与喜悦✨
⭐️点赞收藏加关注学习知识不迷路⭐️
✔️✔️✔️✔️
⛳️ 点赞☀️收藏 ⭐️ 关注
⛳️ 点赞☀️收藏 ⭐️ 关注
⛳️ 点赞☀️收藏 ⭐️ 关注
♂️♂️♂️♂️♂️♂️♂️♂️♂️♂️♂️♂️♂️