为什么要用到多态(java)
不是多态的程序,但有继承和重写:classPerson{publicvoidSayHello(){System.out.println("父类");}}classStud...
不是多态的程序,但有继承和重写:
class Person {
public void SayHello() {
System.out.println("父类");
}
}
class Student extends Person {
public void SayHello() {
System.out.println("学生类");
}
}
class Teacher extends Person {
public void SayHello() {
System.out.println("教师类");
}
}
class Worker extends Person {
public void SayHello() {
System.out.println("工人类");
}
}
public class School {
public static void main(String[] args) {
Student s = new Student();
Teacher t = new Teacher();
Worker w = new Worker();
s.SayHello();
t.SayHello();
w.SayHello();
}
}
多态程序:
class Person {
public void SayHello() {
System.out.println("父类");
}
}
class Student extends Person {
public void SayHello() {
System.out.println("学生类");
}
}
class Teacher extends Person {
public void SayHello() {
System.out.println("教师类");
}
}
class Worker extends Person {
public void SayHello() {
System.out.println("工人类");
}
}
public class School {
public static void main(String[] args) {
Person s = new Student();
Person t = new Teacher();
Person w = new Worker();
s.SayHello();
t.SayHello();
w.SayHello();
}
}
这2个代码修改起来差不多,代码量基本一致。那为什么还要用到多态?我初学者,请高手帮帮忙。
2个程序不同的写法在main方法 展开
class Person {
public void SayHello() {
System.out.println("父类");
}
}
class Student extends Person {
public void SayHello() {
System.out.println("学生类");
}
}
class Teacher extends Person {
public void SayHello() {
System.out.println("教师类");
}
}
class Worker extends Person {
public void SayHello() {
System.out.println("工人类");
}
}
public class School {
public static void main(String[] args) {
Student s = new Student();
Teacher t = new Teacher();
Worker w = new Worker();
s.SayHello();
t.SayHello();
w.SayHello();
}
}
多态程序:
class Person {
public void SayHello() {
System.out.println("父类");
}
}
class Student extends Person {
public void SayHello() {
System.out.println("学生类");
}
}
class Teacher extends Person {
public void SayHello() {
System.out.println("教师类");
}
}
class Worker extends Person {
public void SayHello() {
System.out.println("工人类");
}
}
public class School {
public static void main(String[] args) {
Person s = new Student();
Person t = new Teacher();
Person w = new Worker();
s.SayHello();
t.SayHello();
w.SayHello();
}
}
这2个代码修改起来差不多,代码量基本一致。那为什么还要用到多态?我初学者,请高手帮帮忙。
2个程序不同的写法在main方法 展开
展开全部
比如:
public class School {
public static void main(String[] args) {
sayHello(new Student());
sayHello(new Teacher());
sayHello(new Worker());
}
public static void sayHello(Person s){
s.SayHello();
}
}
这样,你就可以看出多态的魅力了:
同一个方法,传入不同的对象,执行不同对象的相应方法。假如你要普通方法写一下看看?
补充:就比方说,一个领导安排任务呢,他肯定会说所有的程序员今天晚上加班。而不是说:X张三,王五,赵四。。。。加班,对吧。多态就是这样的作用,便于集中管理。
public class School {
public static void main(String[] args) {
sayHello(new Student());
sayHello(new Teacher());
sayHello(new Worker());
}
public static void sayHello(Person s){
s.SayHello();
}
}
这样,你就可以看出多态的魅力了:
同一个方法,传入不同的对象,执行不同对象的相应方法。假如你要普通方法写一下看看?
补充:就比方说,一个领导安排任务呢,他肯定会说所有的程序员今天晚上加班。而不是说:X张三,王五,赵四。。。。加班,对吧。多态就是这样的作用,便于集中管理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多态的引入使你在创建对象的时候不用关心对象的具体类型。例如创建s、t、w时,没有引入多态时分别用了Student Teacher Worker三个类,而在后面的例子中只用到了他们共同的父类Person,提高了代码复用性。这个例子反映了对象的多态性,是多态性的一个重要特点。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
4楼说的正确啊
不过在补充点 就是你列子2个所有的子类都可以用父类的引用来操作 如果你的对象很多的话(其实复杂的程序你根本就不知道具体要创造出多少对象)你不能只用单一的自己定义的引用去管理 这个时候需要容器来管理(list map 数组什么的) 这个时候用一个父类的容器就能管理所有子类的对象~
不过在补充点 就是你列子2个所有的子类都可以用父类的引用来操作 如果你的对象很多的话(其实复杂的程序你根本就不知道具体要创造出多少对象)你不能只用单一的自己定义的引用去管理 这个时候需要容器来管理(list map 数组什么的) 这个时候用一个父类的容器就能管理所有子类的对象~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比如,你的3个子类我只要运行一个,你可以将要运行的子类名称写在一个配置文件中,然后运用反射机制来构建出那个子类的一个对象,那样当你想换一个子类运行时,你就可以去配置文件中把名字改一下,源程序连main()方法都不需要改变,就可以正常运行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询