A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gss 中级黑马   /  2015-9-17 21:42  /  287 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
* a:抽象类和抽象方法必须用abstract关键字修饰
                * abstract class 类名 {}
                * public abstract void eat();//当不知道该方法具体是怎么实现的
                //比如动物吃,你知道它吃什么吗?怎么吃?都不知道
        * b:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口
        * c:抽象类不能实例化那么,抽象类如何实例化呢?
                * 按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
        * d:抽象类的子类
                * 要么是抽象类
                * 要么重写抽象类中的所有抽象方法
*/
public abstract class Animal {
        abstract void eat();

}

public class Cat extends Animal {
public void eat(){
       
        System.out.println("我吃鱼");
       
       
       
}
public void catchMouse(){
        System.out.println("抓老鼠");
       
       
}
}
public  class Dog  extends Animal {
        public  void eat(){
               
                System.out.println("我吃骨头");
               
               
               
        }
        public  void  kanjia(){
               
                System.out.println("我看家");
               
        }

}

        public static void main(String[] args) {
                // TODO Auto-generated method stubc
                //Cat c=new Cat();
                //Animal c=new Cat();//多态
                //c.eat();
                //Animal x=new Animal();
        //        Cat c=(Cat)x;不能将父类强制转化为子类
                //Animal d=new Dog();
                //d.eat();
                //c.eat();
                //Dog d=new Dog();
                //d.eat();
                function(new Cat());
                function(new Dog());

        }
        public static void function(Animal  x){//提取公共属性,提高代码的扩展性
                x.eat();
                if(x instanceof Cat){
                        Cat c=(Cat)x;
                        c.catchMouse();
                       
                }
                else if(x instanceof Dog){
                        Dog d=(Dog)x;
                        d.kanjia();
                       
                       
                       
                }
               

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马