1、面向对象编程有三大特性
封装、继承、多态。
封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。
继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。
2、Java多态的三个必要条件:
1、 继承
2、 子类重写父类方法
3、 父类引用指向子类对象
3、Demo
package test.xing;
class Father{
protected int age;
public Father(){
age = 40;
}
void eat(){
System.out.println("父亲在吃饭");
}
}
class Child extends Father{
protected int age;
public Child(){
age = 18;
}
void eat(){
System.out.println("孩子在吃饭");
}
void play(){
System.out.println("孩子在打CS");
}
}
public class TestPolymorphic {
public static void main(String[] args) {
Father c = new Child();
c.eat();
//c.play();
System.out.println("年龄:"+c.age );
}
}
输出结果
给出结论:当满足Java多态的三个条件时,可以发现c.eat()调用的实际上是子类的eat,但c.age调用的还是父类的age,而c.play()则不会通过编译