Java教程

JAVA中的面向对象2

本文主要是介绍JAVA中的面向对象2,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

JAVA中的面向对象2

  • 代码块
    • 构造代码块
    • 局部代码块
  • 继承
    • 格式
    • 权限修饰符
    • Super
    • Override
  • 多态
    • Static静态
      • 静态方法

代码块

构造代码块

会在每一次创建对象时调用,构造代码块是先与构造方法执行的。
使用方法:直接在类中提供一个{}

局部代码块

在方法中提供一个{}
局部代码块可以提高栈内存的效率,可以提前释放局部的变量内存。

继承

把原有类中的公共的代码抽取到一个新类中,原有类和新类使用extends关键字进行联系。新类称之为父类,原有类称之为子类,子类会继承父类所有的属性和方法。但是子类只能使用对子类可见的属性方法。

格式

子类 extens父类
继承可以提高代码的复用率
java有多层继承,没有多继承

权限修饰符

权限修饰符本类子类同包类其他类
public可以可以可以可以
protected可以可以可以不可以
default可以同包子类可以不可以
private可以不可以不可以不可以

Super

super关键字可以调用父类可见的方法和属性
当创建子类对象时,会默认去调用父类的构造方法
可能报错:Implicit super constructor 类名() is undefined. Must explicitly invoke another constructor注意有参和无参调用的方法。
super():调用父类的无参构造,super()代码必须放在方法的第一行
this():调用本类的构造方法,必须放在有效代码第一行
所以说super()和this()不能共存。

Override

在父子类中出现了方法签名一致的非静态方法,就称之为重写(Override)
重要的“两小一大”原则

  1. 方法签名一致
  2. 如果方法的返回值的类型是基本数据类型/void,那么子类中的方法的返回值类型必须和父类的返回值类型保持一致。
  3. 子类重写的方法的权限修饰符,必须要比父类方法的权限修饰符范围更大或相等。
  4. 如果父类方法的返回值类型是引用数据类型,那么子类方法的返回值类型要么和父类的返回值类型一致,要么是父类返回值类型的子类。

多态

事物的多种形态
编译时多态:方法的重载
运行时的多态:方法的重写 向上造型

Static静态

可以修饰变量、方法、代码块
静态变量:使用static修饰的变量,又称之为类变量。可以使用 类名.变量名 来调用静态变量。
静态变量是随着类的加载是加载到方法区的,是先于对象出现的,在方法区中会有一个默认值。不同的对象使用的静态变量是同一个。可以使用类名直接访问。

类是加载到方法区的
类是第一次使用时才加载
类只加载一次

静态变量不可以在构造方法中

静态方法

使用static修饰的方法称之为静态方法。静态方法会随着类的加载而加载到方法区中,当静态方法被0调用时,区栈中执行。静态方法也是先于对象而存在的。可以使用 类名.静态方法名() 的形式调用。

静态方法中可以适应this/super吗? ----->不可以
静态方法中可以调用本类的非静态方法吗?----->不可以、在本类中调用demo()相当于this.demo,
因为静态方法中不可以使用this,所以静态方法不能调用非静态方法

静态方法可以被继承吗? ----->可以

静态方法可以被重写吗?------>不可以 如果父子类中出现了同名的静态方法,称之为隐藏(hide)。
如果父子类中有同名方法,要么都是静态(隐藏),要么都是非静态(重写)
因残也遵循“两等两小一大”原则

静态代码块:被static修饰的{}静态代码块随着类的加载而加载,会在加载类是调用。静态代码块在栈中执行的。

案例:统计当前类创建对象的个数。

静态代码块 构造代码块 构造方法执行顺序
父类静态——>子类静态——>父类非静态——>子类非静态

类加载的过程:
java通过编译生成class文件,经过类加载器将class文件加载成字节码文件区执行

加载:将字节码文件加载到内存中

校验:检查字节码的安全性

准备:会给静态变量开辟内存空间,并且设定一个标记值。标记值可能会被舍弃

解析:

初始化:开始执行静态代码块和静态变量赋值的代码。没有特定的顺序,那行代码在上就先执行

在标记值状态下,不能进行直接操作,但是可以执行引用操作。

这篇关于JAVA中的面向对象2的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!