Java面向对象——多态、final

简介: Java面向对象——多态、final

代码块


在Java中,使用{}括起来的代码被称为代码块。


代码块根据定义的位置不同,分为:


  1. 局部代码块:在方法中出现;限定变量生命周期,及早释放,提高内存利用率


  1. 构造代码块:在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行


  1. 静态代码块:在类中方法外出现,加了static修饰。


在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。


其中,执行顺序为:静态代码块>构造代码块>局部代码块


面试题:看程序判断代码块的执行顺序

class Student {
  static {
    System.out.println("Student 静态代码块"); //3
  }
  {
    System.out.println("Student 构造代码块"); //4 6
  }
  public Student() {
    System.out.println("Student 构造方法"); //5 7
  }
  }
  class StudentDemo {
  static {
    System.out.println("StudentDemo的静态代码块");//1
  }
  public static void main(String[] args) {
    System.out.println("我是main方法");//2
    Student s1 = new Student();
    Student s2 = new Student();
  }
  }
  //执行顺序如代码所示


final


最终的,可以修饰变量,类,成员方法。


final修饰特点:


  • 修饰变量,此变量为自定义常量


  • 修饰类,此类不能被继承


  • 修饰方法,此方法不能被重写,子类可以原封不动的继承下去用


  • 修饰基本数据类型,此值不能再改变


修饰引用数据类型,此地址值不能再改变


多态


多态,指的是某一个成员,在不同时刻表现出来的不同状态。


特点:


  • 继承是多态的前提


  • 多态的必要条件


     要有继承

    要有方法重写(可以没有,但是多态就没有意义)


   父类引用要指向子类对象(父 f = new 子();)


  • 多态中成员变量的访问特点:


成员变量:编译看左边,运行看左边


构造方法:创建子类对象的时候,会访问父类的构造方法,对父类的数据进行初始化


成员方法:编译看左边,运行看右边


静态方法:编译看左边,运行看左边(静态和类相关,算不上重写,所以,访问还是左边的)


  • 多态的优点:提高代码的复用性和扩展性


  • 多态的缺点:不能访问子类独有的功能。父类引用不能访问子类独有的方法,若想访问,可以向下转型


  • 以多态的形式来访问成员变量,使用的还是父类的变量


  • 以多态的形式来访问成员方法,编译看左边,运行看右边(以子类为准)


目录
相关文章
|
3月前
|
存储 缓存 安全
除了变量,final还能修饰哪些Java元素
在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
50 3
|
1月前
|
Java
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
130 15
|
2月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
39 1
|
3月前
|
Java
final 在 java 中有什么作用
在 Java 中,`final` 关键字用于限制变量、方法和类的修改或继承。对变量使用 `final` 可使其成为常量;对方法使用 `final` 禁止其被重写;对类使用 `final` 禁止其被继承。
61 2
|
3月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
37 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
3月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
65 2
|
4月前
|
存储 Java 测试技术
Java零基础-多态详解
【10月更文挑战第10天】Java零基础教学篇,手把手实践教学!
65 4
|
4月前
|
Java 编译器 程序员
Java多态背后的秘密:动态绑定如何工作?
本文介绍了Java中多态的实现原理,通过动态绑定和虚拟方法表,使得父类引用可以调用子类的方法,增强了代码的灵活性和可维护性。文中通过具体示例详细解析了多态的工作机制。
100 4
|
4月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
61 3
|
4月前
|
存储 安全 Java
了解final关键字在Java并发编程领域的作用吗?
在Java并发编程中,`final`关键字不仅用于修饰变量、方法和类,还在多线程环境中确保对象状态的可见性和不变性。本文深入探讨了`final`关键字的作用,特别是其在final域重排序规则中的应用,以及如何防止对象的“部分创建”问题,确保线程安全。通过具体示例,文章详细解析了final域的写入和读取操作的重排序规则,以及这些规则在不同处理器上的实现差异。
了解final关键字在Java并发编程领域的作用吗?

热门文章

最新文章