JAVASE面向对象3---继承和多态---D8

2.继承

(1)概念
多个类中有重复内容把重复放到一个新类中,就可以通过extends关键字去让原来的类和新类产生继承关系。新类----父类、超类、基类; 原来的类----子类、派生类。子类只能拿到父类一部分信息(有作用域的限制)

(2)单继承和多继承哪个好?场景不一样需要的也不一样。
  一个父类中可以有多个子类,一个子类只能有一个父类-----java单继承----避免的方法的混用,提高代码复用性。
 c语言支持多继承----极高的提高代码的复用性。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)方法的重写(覆盖)

父子类中出现了方法签名一致的方法—重写—遵守重写的原则----两等两小一大(规律)

  1. 如果父类的方法签名和子类的方法签名一致
  2. 如果父类的方法返回值数据类型是基本类型/void,子类要和父类一致
  3. 如果父类的方法返回值是引用类型,那么子类的方法返回值要么和父类一致要么是其子类
  4. 子类的访问权限修饰符要比父类的范围大,如果父类的方法用private修饰,这个方法就是私有的,对子类不可见,子类继承不到(父类构造方法、父类构造代码块)
    在这里插入图片描述

(4)访问权限修饰符:
在这里插入图片描述
private 和 protected
如果父类用protected修饰方法,子类对象要在当前子类的本类中去使用。

父类:
在这里插入图片描述
子类:
在这里插入图片描述
(5)super----关键字
  super可以去调用父类的非静态的属性和方法,
   super()语句默认去调用父类无参构造,子类任意的构造方法都要调用父类的构造方法,如果父类没有提供无参构造,子类所有的构造方法都要去调用其他形式的父类构造方法-----父类对象优先于子类对象先产生。
  执行顺序:父类构造代码块—>父类构造方法---->子类构造代码块—>子类构造方法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.多态

(1)概念:代码在使用中多种状态的灵活展示
通过时期来展示代码的多态

编译时期----编译时多态----编译时期才绑定代码
在这里插入图片描述

多态的好处:提高代码的复用性、解耦合(高内聚低耦合)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)重写原则解释:

1)子类的访问权限修饰符要么大于或者等于父类的范围
在这里插入图片描述

2)如果父类的返回值数据类型是引用数据类型子类的引用数据类型要么和父类相等要么是父类的子类
在这里插入图片描述

案例:创建一个图形类(Shape)、矩形(Rectangle)类、正方形类(Square)、圆形类(circle)
属性 长和宽,求面积和周长的方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三.static(静态)

(1)概念:修饰符----变量、方法、代码块、内部类

(2)变量—静态变量(类变量)
  用static修饰变量就成为类变量,随着类加载(方法区中,静态常量池)而加载到方法区中静态区,静态区会对静态变量赋予系统默认初始值,静态变量与类同级,通过类名点去调用静态变量也可以通过对象调用。静态变量存储在方法区静态区对外提供了一个地址,后续创建的所有对象都共享这一块地址,静态变量就是唯一的------所有的属性/变量都要变成静态吗?如果这个属性或者变量想让所有的对象都能共享,就设置成静态。

注意:
   方法中可以定义静态变量吗?静态变量与类同级,方法里的内容被调用的时候才执行------不可以
  构造代码块可以定义静态变量吗?静态变量与类同级,构造代码块与对象同级-----不可以
在这里插入图片描述
在这里插入图片描述
内存分析图:
在这里插入图片描述
(3)方法—静态方法(类方法)

  静态修饰的方法随着类加载(方法区静态常量池)而加载到方法区静态区,静态区不会对静态方法赋予系统默认初始值,可以通过类名点来调用也可以通过对象来调用,静态方法执行放在栈内存执行


  静态方法可以定义静态变量吗?方法的内容需要方法被调用的时候在执行---不可以

  静态方法中可以使用this? 静态方法与类同级,this与对象同级------不可以。
  main 方法调用非静态方法?-----不可以,静态方法都不能直接调用非静态方法,非静态方法可以调用静态方法

Arrays.sort();
System.arraycopy();
Arrays.copyOf();
Arrays.toString();
System.out.println();-----out静态属性---println----方法

  静态方法的重载与重写----可以重载 重写的前提是继承----可以继承
  父子类中可以存在方法签名一致的静态方法但不是方法的重写,父子类中要么都是静态方法要么都不是静态方法。
在这里插入图片描述

(4)代码块—静态代码块
在方法外类内用static修饰的{}----随着类的加载而加载,与类同级只加载一次,优先于构造代码块和构造方法执行。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值