20210809学习

day07复习总结

面向对象的特征: 继承

1. 使用extends 建立子类与父类的继承关系

2.子类继承父类相当于子类把父类的功能复制了一份,但注意,构造方法不能被继承.

3.继承后,子类可以使用父类所有非私有资源,私有资源不可用的原因是不可见

4.java只支持单继承,一个子类只能有一个父类,但是一个父类可以有多个子类

关键字 super

  1. super 可以在父类成员变量与子类成员变量同名时,用super,变量名的方式调用父类的成员变量
  2. 还可以通过super调用父类的构造方法,子类的构造方法首行默认存在super();表示调用父类的无参构造,如果没有父类的无参构造,需要手动提供父类的其他含参构造供子类调用
  3. 注意: 只能的构造方法中调用,是被动被触发的,只能在首行中调用.

方法的重写

  1. 前提:子类继承父类以后,对父类的功能做改进,
  2. 语法规则: 两同两小一大
    两同: 子类的方法与父类方法的方法名 + 参数列表相同
    一大: 子类方法的修饰符 >= 父类方法的修饰符
    两小: 子类的返回值类型大小 和抛出异常的大小 <= 父类
  3. 注意: 我们在重写规则中提到的方法的返回值类型的大小,指的不是字节的大小[byte/int] 我们这里指的是说:
    比如: 父类是 void 子类是 void
    Cat MiaoMiao

关键字 static

  1. 静态可以修饰变量,方法,代码块
  2. 被static修饰的资源称作静态资源
  3. 静态资源属于类资源,随着类的加载而加载,只加载一次
  4. 静态资源可以被类名直接调用,原因是因为静态资源优先于对象加载
  5. 静态资源被全局对象共享,只有一份
  6. 静态只能调用静态
  7. 静态代码块static{}
    位置: 类里方法外
    执行时机: 类加载时就加载,而且只会加载一次
    作用: 初始化,只用于加载那些需要第一时间就加载,而且只加载一次的资源
  8. 代码块的执行顺序 静态代码块 构造代码块 构造方法 局部代码块
    先静态 后普通 先父类 后子类

关键字 final

final 表示最终,可以修饰
9. 被final修饰的类是最终类 ,不可以被继承
10. 被final修饰的方法时方法的最终实现,不可以被重写
11. 被final修饰的"变量"其实是常量,值不可以被修改,而且常量定义是必须被赋值

package cn.tedu.oopextends;

/**
 * 本类用于测试继承中成员变量的使用
 * @author ZHU
 * @create 2021/8/9 11:13
 */
public class TestExtend1 {
   
}

class Father{
   }

class Son extends Father{
   
    int  sum = 100;

    public void eat(){
   
        int sum = 10;
        System.out.println(sum);
        System.out.println(this.sum);
    }
}
package cn.tedu.oopextends;

/**
 * 本类用于测试继承中构造方法的使用
 * @author ZHU
 * @create 2021/8/9 11:31
 */

/**
 * 子类创建对象时,默认会先调用父类的构造方法
 */

/**
 * 原因是由于子类构造函数的第一行默认存在super() -- 表示调用父类的无参构造
 */
public class TestExtends2 {
   
    public static void main(String[] args) {
   
        Father2 f2 = new Father2();
        Son2 s2 = new Son2();
    }
}

class Father2{
   
    public Father2() {
   
        System.out.println("woshi f2de wucan");
    }
}

class Son2 extends Father2{
   
    public Son2() {
   
        System.out.println("woshi s2 de wucan");
    }
}
package cn.tedu.oopextends;

/**
 * 方法的重写  本类用来测试继承中方法的使用
 * @author ZHU
 * @create 2021/8/9 14:07
 */

/**
 * 重写的语法规则: 两同两小一大
 *
 * 一大: 子类方法的修饰符范围 >=  父类方法的修饰符范围 -- 指的是访问修饰符
 * 两同: 方法名相同,参数列表相同,
 * 两小: 子类方法的返回值类型 <= 父类方法的返回值类型
 *       子类方法抛出的异常类型 <= 父类方法抛出的异常类型
 * 注意: 如果父类方法的返回值类型是void,子类保持一致即可.
 * 注意: 子类不可以重写父类的私有方法,还是因为不可见.
 */
public class TestExtends3 {
   
    public static void 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值