java-重写(入门教程)

一. 重写  
继承的主要功能首先是让子类能复用父类的成员(属性 方法), 
但最主要的继承原因其实是让子类扩展父类的功能
扩展功能有两种实现形式:
    1. 增加子类特有的功能
    2. 重写父类已有的功能
    
问: 什么时候重写?  
    当对父类的方法功能不满意或者不符合子类的要求, 就需要重写
问: 如何实现重写 ? 
    最基本的重写就是子类的方法描述和父类方法的描述完全一致
    访问修饰符 public / private
    返回类型 void
    方法名 method
    参数列表 (int a, double b)
    
问: 如何实现方法重载 ? 
同名不同参(方法名相同, 参数列表不同)
参数列表要求: 个数不一样, 类型不一样, 顺序不一样(鸡肋)
子类中可以实现父类方法重载;    
★: 重写之后如何分析对象调用的方法
    1. 实例化的是哪个类 
    2. 实例化的类中调用的方法是否为重写的方法, 
        如果没重写则调用父类的方法
有哪些方法看前面的类型

以下示例是否构成重写 ?
1. 关于返回值类型不同
class Parent{
    public void run(){
        System.out.println("跑步");
    }
}
class Child extends Parent{    
    public int run(){  //int会编译报错
        System.out.println("子类跑步");
        return 2;
    }
}

结论: 子类在重写父类方法的时候, 返回类型不一致会产生编译错误

2. 关于访问修饰符不同
class Parent{
    public void run(){
        System.out.println("跑步");
    }
}
class Child extends Parent{    
    private void run(){ //编译报错
        System.out.println("子类跑步");
    }
}
        
结论: 子类在重写父类方法的时候, 访问权限一定要大于等于父类的访问权限,
如果父类的方法的public, 那么子类的访问修饰符就一定要是public

问: 当一个子类重写了父类的方法后, 如果再想调用父类被重写的方法, 而不是自己的方法时怎么办 ?
答:     super.run();

★★★★★
思考 : 父类使用了private , 子类重写用了public , 有没有实现重写 ?
答: 这种情况虽然没有编译报错, 但是也没有到达重写的机制

二. 多态 ★★★★★                                封装: 安全性 继承: 重用性
多态是面向对象的第三大特性, 主要是作用是提高程序的扩展性
多态有两种形式:
    1. 方法多态
    静态多态(编译时多态): 重载
    同一个方法名, 根据参数列表不同执行不同的方法体
    在编译的时候就确定调用的方法
    add(int a)
    add(int a, int b)
    add(int a, int b, int c)

    动态多态(运行时多态): 重写
    同一个方法名, 根据子类对象的不同执行的不同的方法体
    在运行的时候才确定调用的方法
    剪(): 能到达多态的形式
    医生.剪();
    理发师.剪();
    园林师.剪();

    2. 对象多态 : ★★★★★    
    多态只发生在有继承关系的子类与父类之间 
    向上转型(自动转换 安全)  动物 dw = new 猫();
        术语: 父类引用指向子类对象
    向下转型(强制转换 危险)  猫 m = (猫)dw;
    
    之前基本类型类似语法:
    double a = 10;  自动转型
    int b = (int)32.5; 损失精度 强制转型
     

    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值