多态、抽象类

33 篇文章 0 订阅
30 篇文章 0 订阅

多态

多态:同一个行为具有的多个不同表现形式或形态的能力(多态性是对象多种表现形式的体现)
存在的必要条件
1.继承
2.方法重写
3.父类引用指向子类对象

Parent p = new Child();

成员访问特点
1.成员变量:编译看坐边,运行看右边;
2.构造方法:创建子类对象时,会访问父类的构造方法,对父类的数据进行初始化
3.成员方法 :编译看左边,运行看右边
4.静态方法:编译看左边,运行看右边
优点
1.提高代码的维护性
2.提高了代码的扩展性
向上转型:父类引用指向子类对象例: Animal a = new Cat();
向下转型:把父类的引用强制转换为子类的引用例:Cat c = (Cat)a;

//多态
public class Test {
    public static void main(String[] args) {
      show(new Cat());  // 以 Cat 对象调用 show 方法
      show(new Dog());  // 以 Dog 对象调用 show 方法
                
      Animal a = new Cat();  // 向上转型  
      a.eat();               // 调用的是 Cat 的 eat
      Cat c = (Cat)a;        // 向下转型  
      c.work();        // 调用的是 Cat 的 work
  }    
}
 
 class Animal {  
    public void eat(){
       System.out.println("吃饭");  
    }  
    };  
}  
  
class Cat extends Animal {  
    public void eat() {  
        System.out.println("吃鱼");  
    }  
    public void work() {  
        System.out.println("抓老鼠");  
    }  
}  
  
class Dog extends Animal {  
    public void eat() {  
        System.out.println("吃骨头");  
    }  
    public void work() {  
        System.out.println("看家");  
    }  
}

抽象类

抽象类:用abstract关键字修饰的类例:abstract class 类名 {}
抽象方法:用abstract关键字修饰的方法例:public abstract void eat();
抽象类的特点
1.抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类(即成员方法,可以是抽象的,也可以是非抽象的)。
2.抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
3. 抽象类不能被实例化,只有抽象类的非抽象子类可以创建对象。
4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值