【169天】黑马程序员27天视频学习笔记【Day08-上】
叨逼叨两句
正式开始了,没有回头路了,勇往直前!!!
08-01:代码块的概述和分类
代码块的作用
代码块的主要作用是限定变量的生命周期,只在代码块内有效,出了就无效了。
代码块的分类
根据其位置和声明的不同进行划分。
局部代码块
在方法中出现,限定变量生命周期,及早释放,提高内存利用率。
构造代码块(初始化块)
在类中方法外出现,多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
静态代码块
在类中方法外出现,并加上static修饰。
用于给类进行初始化,在加载的时候就执行,并且只执行一次。
一般用于加载驱动。
同步代码块(多线程再讲)
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)
继承的好处
提高代码复用性
提高代码的维护性
让类与类之间产生了联系,是多态的前提
继承的坏处
类的耦合性增强
开发原则
高内聚、低耦合
【耦合:类与类之间的关系】
【内聚:自己完成某件事情的能力】
类的继承特点
Java只支持单继承、不支持多继承(一个儿子只能有一个爹)
Java支持多层继承(继承体系)
想用共性功能,看最顶层父类;想用全部功能,看最底层子类
继承的注意事项
子类不能继承父类的构造方法
子类不能继承父类的所有非私有成员(成员变量和成员方法)
继承的使用场景
体现"is a"的关系,而非"has a"
继承中成员变量中的关系
子类中出现与父类同名的变量,按“就近原则”,子类有就不用父类的了。【开发中不会干这种没意义的事】
this与super的区别
调用成员变量/方法
this既可以调用本类,也可以调用父类(其实是指调用继承自父类的成员)
super只调用父类
调用构造方法
this只调用本类构造方法
super只调用父类构造方法
继承中构造方法的关系
因为子类会继承父类中的数据,可能还会使用父类的数据,所以子类初始化前,父类必须先初始化。
父类没有无参构造方法的解决方案
具体看视频
super
this写固定值
super写固定值
super和this不能同时出现在一个构造方法
练习
时刻记得,构造方法中有个隐藏的super()。
该题值得再看一次视频
JVM调用了main方法,main方法进栈。
main方法遇到
Zi a = new Zi();
然后加载Fu.class和Zi.class,此时静态代码块执行开始执行子类构造方法,因为Java中是分层初始化的,先初始化父类,再初始化子类,所以先走父类构造,但是执行父类构造时,发现父类有构造代码块,于是先执行构造代码块
父类初始化结束后,子类初始化,先执行构造代码块,再执行构造方法。
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-上】相关推荐
- 【168天】黑马程序员27天视频学习笔记【Day07】
[168天]黑马程序员27天视频学习笔记[Day07] 叨逼叨两句 决定了,我会记住这一天! 07-01:构造方法Constructor概述和格式 构造方法概述和作用 给对象的数据(属性)进行初始化. ...
- 【176天】黑马程序员27天视频学习笔记【Day11-上】
叨逼叨两句 正式结束了,之后就是收尾工作. 今天想休息一下,任务就不做满了. 未来定个标准,事不过三,一天的任务,最多分三天完成,超过要罚分. 11-(01-04):Eclipse使用方法 程序的编译 ...
- 【186天】黑马程序员27天视频学习笔记【Day15-上】
叨逼叨两句 今天和朋友聊了聊,感觉真的很好,人还是得多跟别人交流,才能发现自己一些观念和理论上的漏洞. 今天帮了大家一个忙,总算要接近尾声了,开心啊. 我要准备去做一件伟大的事! 很高兴姐姐迈开了这一 ...
- 【208天】黑马程序员27天视频学习笔记【Day21-中】
叨逼叨两句 今天又了结一件事,好累,好爽. 这几天在哥们家玩,更新内容不会断,但会相对少些了. 21-09:将文本反转 流对象要尽量晚开早关 package com.test.demo001;impo ...
- 【201天】黑马程序员27天视频学习笔记【Day18复习脑图】
叨逼叨两句 Day17看完了,OK~ 下午把其它琐事搞完~ Day18脑图
- 【198天】黑马程序员27天视频学习笔记【Day13-14复习脑图】
叨逼叨两句 快点搞定这堆破事吧.总让我分心.. Day13脑图 Day14脑图
- 【199天】黑马程序员27天视频学习笔记【Day15-16复习脑图】
叨逼叨两句 原来,我最想要的,其实是自由 规避风险是本能,买卖风险是智能 Day15脑图 Day16脑图
- 【218天】黑马程序员27天视频学习笔记【Day20-21复习脑图】
叨叨两句 不要追求完美,不断改进. 运用好大脑外挂 Day20脑图 Day21脑图
- 哔哩哔哩黑马程序员C++课程个人学习笔记
写在前面:此博文仅作为个人c++学习笔记,或有错误不建议参考!!! 视频链接:黑马程序员c++教程从0到1 目录 一.第一部分c++基础 1.1 c++初识 1.1.1 hello world 1.1 ...
- 【C++】黑马程序员-C++核心编程学习笔记
前言 根据黑马程序员C++课程内容,结合讲义,将自己学习C++的过程中将自己觉得有必要记下的笔记进行整理,方便复习回顾,编程环境为VSCode. 本阶段主要针对C++面向对象编程技术做详细讲解,探讨C ...
最新文章
- XCode 导入头文件不提示解决
- JDK和JRE的概念与区别
- OpenERP 源码安装一招鲜
- Optimizing Code with GCC
- python去重复元素_Python实现去除列表中重复元素的方法总结【7种方法】
- h5封装去底部_Appium—Native+H5混合APP的自动化
- windows无法格式化u盘_U盘无法打开提示格式化?4种方法快速拯救它
- 如何理解客户需求,市场需求,业务需求,功能需求,产品需求,设计需求?
- 重绘回流个人理解版本
- android apk很大,从Android Studio生成的Apk文件太大
- python文件起名字的时候不要用模块的名字,不然会默认导入本地的文件,找不到你要的模块方法,会报错AttributeError: module ‘random‘ has no attribute ‘
- tsp问题——遗传算法解决
- kvm虚拟机压缩qcow2镜像空间
- [WHS] Windows Home Server 官方中文站点上线
- 高数:第四章(同济大学第七版)
- ios挂载 yum源配置
- linux内核协议栈 TCP层数据发送之TSO/GSO
- Windows 7 安装最新版 2021-3-1 的 tableau 时提示 “指定程序要求更新的 Windows 版本” 解决办法
- 阿里巴巴分布式数据库服务DRDS
- jsp电影评论网站ssh框架
热门文章
- AOP 实现请求参数打印
- 编译Libgdiplus遇到的问题
- 九度OJ 1340:小A的计算器 (进制转换)
- 九度OJ - 题目1481:Is It A Tree?
- POJ-1004-Financial Management
- 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication'
- Spring自定义注解(验证身份证+性别+地区)
- idea原生ajax数据处理(增删改查)
- python全栈脱产第20天------常用模块---re模块和subprocess模块
- jQury+Ajax与C#后台交换数据