面向对象(物以类聚)的三大基本特征:封装,继承和多态
1.封装(数据隐藏):将数据和行为结合在一个包中,并对对象的使用者隐藏了数据的实现方式,关键在于不能让类中的方法直接访问其它类的实例域(数据),只能访问自己的实例域,提高重用行和可靠性。
2.继承:利用已有的数据类型(类)来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。(java中只有共有继承,但父类中的私有属性或方法在子类中是不可见的,可设置保护方法或保护属性使其在子类中访问)
好处:重用代码,节省程序设计的时间,提高软件模块的可复用性和可扩充性,以便提高软件的开发效率。
3.多态:通过类的继承,使得同一个函数可以根据调用它的对象的类型的不同做出不同的响应。自始至终都是子类对象在变化
前提:需要有类的继承关系和覆盖方法
好处:提高了程序的扩展性,不需修改或增加太多的代码
class Animal
{
void eat()
{}
}
class Cat extends Animal
{
public void eat()
{
System.out.println("猫吃饭");
}
}
class Dog extends Animal
{
public void eat()
{
System.out.prinln("狗吃饭");
}
}
class DuoTaiDemo
{
public static void main(String[] args)
{
Cat c=new Cat();
c.eat();
Dog d=new Dog();
d.eat();
//如果还有另一Dog则需重新再new一个对象,调用其方法,或者使用下面定义的catfun()方法
System.out.println("Hello World!");
//此时可以使用Animal定义,则更为简单
Animal c=new Cat();
allfun(c);
Animal d=new Dog();
allfun(d);
}
public static void catfun(Cat c)
{
c.eat();
}
public static void dogfun(Dog d)
{
d.eat();
}
//如果再有另一动物Pig等,则需再增加一个方法,此时会增加过多的代码
//所以上述定义可以使用下面的方法定义
public static void allfun(Animal a)
{
a.eat();
}
}