叨逼叨两句

正式开始了,没有回头路了,勇往直前!!!

08-01:代码块的概述和分类

代码块的作用

代码块的主要作用是限定变量的生命周期,只在代码块内有效,出了就无效了。

代码块的分类

根据其位置和声明的不同进行划分。

  1. 局部代码块

    • 在方法中出现,限定变量生命周期,及早释放,提高内存利用率。

  2. 构造代码块(初始化块)

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

  3. 静态代码块

    • 在类中方法外出现,并加上static修饰。

    • 用于给类进行初始化,在加载的时候就执行,并且只执行一次。

    • 一般用于加载驱动。

  4. 同步代码块(多线程再讲)

package test_heima_08;public class Demo1_Student {public static void main(String[] args){Student s1 = new Student();}
}class Student{private String name;private int age;public Student(){{System.out.println("局部代码块");}study();}public Student(String name,int age){this.name = name;this.age = age;}public void setName(String name){this.name = name;}public String getName(){return name;}public void setAge(int age){this.age = age;}public int getAge(){return age;}public static void study(){{int x = 3;    //局部代码块//        System.out.println(x);}//System.out.println(x);//局部代码块中的局部变量已经被内存释放}{System.out.println("构造代码块");}static {System.out.println("静态代码块");}}

代码块的执行顺序

静态代码块——>构造代码块——>局部代码块

08-02:代码块练习

package test_heima_08;class Demo02 {static {System.out.println("Demo02静态代码块");}{System.out.println("Demo02构造代码块");}public Demo02(){System.out.println("Demo02构造方法");}}public class Test_Demo02{static {System.out.println("Test_Demo02静态代码块");}public static void main(String[] args){System.out.println("主方法");Demo02 s1 = new Demo02();Demo02 s2 = new Demo02();}
}

08-(03-11)

继承的好处

  1. 提高代码复用性

  2. 提高代码的维护性

  3. 让类与类之间产生了联系,是多态的前提

继承的坏处

  1. 类的耦合性增强

开发原则

  1. 高内聚、低耦合

  2. 【耦合:类与类之间的关系】

  3. 【内聚:自己完成某件事情的能力】

类的继承特点

  1. Java只支持单继承、不支持多继承(一个儿子只能有一个爹)

  2. Java支持多层继承(继承体系)

  3. 想用共性功能,看最顶层父类;想用全部功能,看最底层子类

继承的注意事项

  1. 子类不能继承父类的构造方法

  2. 子类不能继承父类的所有非私有成员(成员变量和成员方法)

继承的使用场景

体现"is a"的关系,而非"has a"

继承中成员变量中的关系

  1. 子类中出现与父类同名的变量,按“就近原则”,子类有就不用父类的了。【开发中不会干这种没意义的事】

this与super的区别

  1. 调用成员变量/方法

    1. this既可以调用本类,也可以调用父类(其实是指调用继承自父类的成员)

    2. super只调用父类

  2. 调用构造方法

    1. this只调用本类构造方法

    2. super只调用父类构造方法

继承中构造方法的关系

因为子类会继承父类中的数据,可能还会使用父类的数据,所以子类初始化前,父类必须先初始化。

父类没有无参构造方法的解决方案

具体看视频

  1. super

  2. this写固定值

  3. super写固定值

super和this不能同时出现在一个构造方法

练习

  1. 时刻记得,构造方法中有个隐藏的super()。

  2. 该题值得再看一次视频

    1. JVM调用了main方法,main方法进栈。

    2. main方法遇到Zi a = new Zi();然后加载Fu.class和Zi.class,此时静态代码块执行

    3. 开始执行子类构造方法,因为Java中是分层初始化的,先初始化父类,再初始化子类,所以先走父类构造,但是执行父类构造时,发现父类有构造代码块,于是先执行构造代码块

    4. 父类初始化结束后,子类初始化,先执行构造代码块,再执行构造方法。

package test_heima_08;public class Test_Demo03 {public static void main(String[] args){Zi a = new Zi();}
}class Fu{static {System.out.println("静态代码块Fu");}{System.out.println("构造代码块Fu");}public Fu(){System.out.println("构造方法Fu");}}class Zi extends Fu{static {System.out.println("静态代码块Zi");}{System.out.println("构造代码块Zi");}public Zi(){System.out.println("构造方法Zi");}}

【169天】黑马程序员27天视频学习笔记【Day08-上】相关推荐

  1. 【168天】黑马程序员27天视频学习笔记【Day07】

    [168天]黑马程序员27天视频学习笔记[Day07] 叨逼叨两句 决定了,我会记住这一天! 07-01:构造方法Constructor概述和格式 构造方法概述和作用 给对象的数据(属性)进行初始化. ...

  2. 【176天】黑马程序员27天视频学习笔记【Day11-上】

    叨逼叨两句 正式结束了,之后就是收尾工作. 今天想休息一下,任务就不做满了. 未来定个标准,事不过三,一天的任务,最多分三天完成,超过要罚分. 11-(01-04):Eclipse使用方法 程序的编译 ...

  3. 【186天】黑马程序员27天视频学习笔记【Day15-上】

    叨逼叨两句 今天和朋友聊了聊,感觉真的很好,人还是得多跟别人交流,才能发现自己一些观念和理论上的漏洞. 今天帮了大家一个忙,总算要接近尾声了,开心啊. 我要准备去做一件伟大的事! 很高兴姐姐迈开了这一 ...

  4. 【208天】黑马程序员27天视频学习笔记【Day21-中】

    叨逼叨两句 今天又了结一件事,好累,好爽. 这几天在哥们家玩,更新内容不会断,但会相对少些了. 21-09:将文本反转 流对象要尽量晚开早关 package com.test.demo001;impo ...

  5. 【201天】黑马程序员27天视频学习笔记【Day18复习脑图】

    叨逼叨两句 Day17看完了,OK~ 下午把其它琐事搞完~ Day18脑图

  6. 【198天】黑马程序员27天视频学习笔记【Day13-14复习脑图】

    叨逼叨两句 快点搞定这堆破事吧.总让我分心.. Day13脑图 Day14脑图

  7. 【199天】黑马程序员27天视频学习笔记【Day15-16复习脑图】

    叨逼叨两句 原来,我最想要的,其实是自由 规避风险是本能,买卖风险是智能 Day15脑图 Day16脑图

  8. 【218天】黑马程序员27天视频学习笔记【Day20-21复习脑图】

    叨叨两句 不要追求完美,不断改进. 运用好大脑外挂 Day20脑图 Day21脑图

  9. 哔哩哔哩黑马程序员C++课程个人学习笔记

    写在前面:此博文仅作为个人c++学习笔记,或有错误不建议参考!!! 视频链接:黑马程序员c++教程从0到1 目录 一.第一部分c++基础 1.1 c++初识 1.1.1 hello world 1.1 ...

  10. 【C++】黑马程序员-C++核心编程学习笔记

    前言 根据黑马程序员C++课程内容,结合讲义,将自己学习C++的过程中将自己觉得有必要记下的笔记进行整理,方便复习回顾,编程环境为VSCode. 本阶段主要针对C++面向对象编程技术做详细讲解,探讨C ...

最新文章

  1. XCode 导入头文件不提示解决
  2. JDK和JRE的概念与区别
  3. OpenERP 源码安装一招鲜
  4. Optimizing Code with GCC
  5. python去重复元素_Python实现去除列表中重复元素的方法总结【7种方法】
  6. h5封装去底部_Appium—Native+H5混合APP的自动化
  7. windows无法格式化u盘_U盘无法打开提示格式化?4种方法快速拯救它
  8. 如何理解客户需求,市场需求,业务需求,功能需求,产品需求,设计需求?
  9. 重绘回流个人理解版本
  10. android apk很大,从Android Studio生成的Apk文件太大
  11. python文件起名字的时候不要用模块的名字,不然会默认导入本地的文件,找不到你要的模块方法,会报错AttributeError: module ‘random‘ has no attribute ‘
  12. tsp问题——遗传算法解决
  13. kvm虚拟机压缩qcow2镜像空间
  14. [WHS] Windows Home Server 官方中文站点上线
  15. 高数:第四章(同济大学第七版)
  16. ios挂载 yum源配置
  17. linux内核协议栈 TCP层数据发送之TSO/GSO
  18. Windows 7 安装最新版 2021-3-1 的 tableau 时提示 “指定程序要求更新的 Windows 版本” 解决办法
  19. 阿里巴巴分布式数据库服务DRDS
  20. jsp电影评论网站ssh框架

热门文章

  1. AOP 实现请求参数打印
  2. 编译Libgdiplus遇到的问题
  3. 九度OJ 1340:小A的计算器 (进制转换)
  4. 九度OJ - 题目1481:Is It A Tree?
  5. POJ-1004-Financial Management
  6. 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication'
  7. Spring自定义注解(验证身份证+性别+地区)
  8. idea原生ajax数据处理(增删改查)
  9. python全栈脱产第20天------常用模块---re模块和subprocess模块
  10. jQury+Ajax与C#后台交换数据