二、Java初级--10、多态
2018-03-22 本文已影响0人
cybeyond
面向对象的三大特点:继承、封装、多态
重载(overloading):一个类中有多个函数,且函数名相同,但每个函数包含的参数不一样
重写(overriding):在父类中有一个函数,在子类中有一个相同名称的函数,也叫做覆盖。
重载的概念,举例:
结构
package javastudy;
public class T1 {
public void print(String s){
System.out.println(s);//重载,函数名相同,但参数不同
}
public void print(int i){
System.out.println(i);
}
}
package javastudy;
public class Testit {
public static void main(String[] args) {
// TODO Auto-generated method stub
T1 t=new T1();
t.print("hello");
t.print(100);//print被重载了2次
}
}
重写的概念,举例:
使用ctrl+shift+s,可以重写父类中的方法
重写eat方法 结构
Animal类
package javastudy;
public class Animal {
public void eat(){
System.out.println("动物吃什么呢?");
}
}
Cat类
package javastudy;
public class Cat extends Animal {
@Override
public void eat() {
// TODO Auto-generated method stub
// super.eat();
System.out.println("猫吃小鱼!");
}
}
Dog类
package javastudy;
public class Dog extends Animal {
@Override
public void eat() {
// TODO Auto-generated method stub
// super.eat(); //super即父类的意思
System.out.println("狗啃骨头!");
}
}
Person类
package javastudy;
public class Person extends Animal {
@Override
public void eat() {
// TODO Auto-generated method stub
super.eat(); //调用父类中的eat()
}
}
testit类
package javastudy;
public class Testit {
public static void main(String[] args) {
// TODO Auto-generated method stub
// T1 t=new T1();
// t.print("hello");
// t.print(100);
Animal a1=new Animal(); //调用构造函数,没有就调用默认的构造函数
Animal a2=new Dog();//可以用父类引用(地址)指向子类的对象;可以用父类的对象存放子类的引用
Animal a3=new Cat();
Animal a4=new Person();
a1.eat();
a2.eat();//如果子类中有重写,则调用子类的,没有重写,则调用父类的
a3.eat();
a4.eat();
}
}
执行结果