Java的三大特性——多态
Posted JunMain
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的三大特性——多态相关的知识,希望对你有一定的参考价值。
什么是多态
多态就是父类引用变量指向子类对象
多态的条件: 具有父子关系
多态的形式 :父类 父类变量 = new 子类();
父类变量只能调用子类对象所继承父类对象的方法和属性 或者重写父类的方法和属性
class Person{
public void eat(){
}
public void say(){
System.out.println("我是人");
}
public void play(){
}
}
class Student extends Person{
public void eat(){
System.out.println("我是学生");
}
}
public class test1{
public static void main(String[] args){
Person person = new Person();
person.say();
// 向上转型 Student类转成成Person类
person = new Student();
//此时person指向的是Student 只能调用Student继承Person的方法或者重写的方法
person.say();
}
}
为什么要有多态
比如 当我的person 和 student都要调用一个方法的时候 say()的时候 由于say()的方式一样但是他们的对象不同
我们需要写重载两个方法 一个方法的参数是Person 一个是Student。
但是当有无数个不同的类都调用show()方法时 且他们都继承了同一个类 的时候 show()就要重载多次十分麻烦
class Person{
public void eat(){
}
public void say(){
System.out.println("我是人");
}
public void play(){
}
}
class Student extends Person{
public void eat(){
System.out.println("我是学生");
}
}
public class test1{
public void show(Person peron){
person.say();
}
public void show(Student student){
student.say();
}
public static void main(String[] args){
Person person = new Person();
Student student = new Student();
show(person);
show(student);
}
}
但是有了多态之后
class Person{
public void eat(){
}
public void say(){
System.out.println("我是人");
}
public void play(){
}
}
class Student extends Person{
public void eat(){
System.out.println("我是学生");
}
}
public class text1{
public void show(Person person){
person.say();
}
public static void main(String[] args){
Person person = new Person();
Student student = new Student();
show(person);
show(student);
//此时person指向的是Student 只能调用Student继承Person的方法或者重写的方法
}
}
以上是关于Java的三大特性——多态的主要内容,如果未能解决你的问题,请参考以下文章