JAVA之 继承 final static 多态

面向对象具有封装继承多态3 个核心特性

继承

一、介绍

程序中继承:子类可以使用父类中的属性和方法

好处:

  1. 代码可以复用

  1. 可以提高开发效率

  1. 是多态的前提

二、语法

类继承另一个类的语法

public class A extends B {
}

读作:A类继承B类,A类是B类的子类,B类是A类的父类

继承的特点

  1. 继承后子类可以使用父类的属性和方法

  1. 不能多继承,只能单继承

  1. 支持层次继承(子→父→爷...)

继承中属性的问题

  1. 子类可以使用父类的非私有属性

  1. 父类不可以使用子类的属性

  1. 如果子类和父类有相同的属性,默认使用子类自己的属性

继承中方法的问题

  1. 子类可以使用父类非私有的方法

  1. 父类不可以使用子类的方法

  1. 如果子类和父类有相同的方法,默认使用子类自己的方法

继承中构造方法的问题

  1. 构造方法都不能被直接调用

  1. 子类构造方法执行,会先调用父类的构造方法,因为子类构造方法内会有隐藏的super()调用父类的无参构造方法,且必须放在构造方法的第一行

  1. 即创建子类对象时,会先创建父类对象再创建子类对象

三、继承中创建对象的过程

  1. 在堆中开启空间,分配地址值

  1. 属性和方法被初始化默认值

  1. 然后执行构造方法内部的代码

  1. 然后再初始化子类属性和方法,初始化默认值

  1. 然后执行子类构造方法内代码

  1. 对象创建成功,将地址值(子类)赋值给变量(对象名)

final

final可以修饰类、属性、方法

  1. final修饰类,类不能被继承

  1. final修饰属性即变量,变量不再变化,为常量(常量命名全大写,单词间用 '_' 分隔,常量不可被重新赋值)

  1. final修饰方法,方法不可被重写

static静态修饰符

1、静态修饰属性和方法

2、一旦修饰属性和方法,那么属性和方法就会变成 类属性、类方法

3、被static修饰的属性和方法随着类加载而初始化

4、且被static修饰的属性和方法在内存中只有一份,被所有该类对象共享

5、静态修饰的属性和方法,不会随着创建对象进堆中,就存在于静态域

以前每次创建对象,每个对象都有属于自己的属性,这些属性叫对象属性。

现在static修饰了属性和方法后,这些属性和方法不再属于某个对象,还是属于类,称为类属性、类方法

语法应用

静态修饰的属性和方法建议直接通过类名调用

因为:静态的属性和方法随着类加载就已经出现在内存中,并初始化成功,意味着可以使用了,就没有必要再通过创建对象后使用对象去调用,这样会浪费时间和空间

例如Arrays类的方法

静态方法只能调用静态方法和静态属性

因为:静态修饰的属性和方法,会随着类加载就已经出现在内存中,并初始化成功。

而对象属性 对象方法(非静态属性和方法)是需要创建对象才会出现

即 有静态属性和静态方法时候,那些没静态的属性和方法还没出现

sum:静态只能调用静态

非静态方法能不能调用静态方法和对象

static方法内部不能调用非静态方法,反过来是可以的。

多态:

某个方法的多种形态,同一个方法,执行时出现不同的结果

多态的前提条件:

1、有继承关系(或者实现接口

2、子类重写父类方法

3、父类引用指向子类对象,也叫向上转型

编译父类执行子类

实现多态:

向上转型&向下转型

向上转型:父类引用指向子类对象,子类对象向上转型成为了父类

向下转型:父类引用向下转型成为子类默认不允许,但是可以通过强制类型转换完成

eg:Dog dog = (Dog)animal;

什么时候需要向下转型?

需要调用子类特有的方法时,就需要将父类引用向下转型成子类对象,才可以使用子类特有的方法!

总结:多态到底怎么用?在什么地方用?

大部分的多态的使用场景就是方法的参数列表设计成父类类型,调用方法时传入子类类型,运行得到子类的效果

PS:子类的访问修饰符范围可以大于父类的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值