面向对象的程序设计(Object Oriented Programming)之三-----多态

 

           三、面向对象的程序设计(Object Oriented Programming)之三-----多态

1、 多态(Polymorphism):父类型的引用可以指向子类的对象。

2、public class  PolyTest
{
 public static void main(String[] args)
 {
  Parent p = new Child();//多态
  p.sing();
 }
}
class Parent
{
 public void sing()
 {
   System.out.println("parent is sing");
 }
}
class Child extends Parent
{
 public void sing()
 {
   System.out.println("child is sing");
 }
}

 

Parent p = new Child();为多态方式调用方法,首先检查父类中是否有sing()方法,若没有编译出错,若要。再去调用子类的sing()方法。

 3、两种强制类型转换:

      a>向上类型转换(upcast):将子类型转换成为父类型;

      b>向下类型转换(downcast):将父类型转换为子类型,对于向下的转换,必须要显示指定(必须要使用强制类型转换)

 例:

 public   class PolyTest
{
 public static void main(String[] args)
 {
    //向上类型转换
    Cat cat = new Cat();
    Animal animal = cat;
    animal.sing();
    //向下类型转换
    Animal a = new Cat();
    Cat c = (Cat)a;
    c.sing();
 }
}
class Animal
{
 public void sing()
 {
    System.out.println("animal is singsing");
 }
}
class Dog extends Animal
{
 public void sing()
 {
   System.out.println("dog is singsing");
 }

}
class Cat extends Animal
{
 public void sing()
 {
   System.out.println("cat is singsing");
 }
}               输出结果为:cat is singsing

                                      cat is singsing

4抽象类(abstract  class):使用了abstract关键字所修饰的类叫做抽象类。抽象类无法实例化,即不能new出一个抽象类对象。

5、抽象方法(abstract method):使用abstract关键字所修饰的方法叫做抽象方法。需要定义在抽象类中。,有声明无实现。之前所定义的方法叫做具体方法,既有声明也有实现。

6、如果一个类中包含了抽象方法,那么这个类一定是抽象类,声明成abstract class,在抽象类中有抽象方法也可以有具体方法。无论何种情况,只要一个类是抽象类,那么这个类无法实例化。在子类继承父类的情况下(父类是抽象类),那么该子类必须要实现父类中所定义的所有抽象方法,否则子类要定义成抽象类。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值