block与debug

it2023-05-22  76

block与debug

block

块{},在java中自成作用域,可以分为

静态代码块构造代码块普通语句块同步代码块声明位置类中,方法外类中,方法外方法中fynchronized(){}作用整个类进行某些初始化操作(静态属性赋值…)构造代码块是为对象初始化操作(为静态或非静态成员属性赋值…)声明一些临时变量等…控制并发执行时机类第一次加载时,只执行一次,如果多个静态块,从上倒下一次执行创建对象时,执行构造器代码之前执行,如有多个,从上倒下一次执行跟随方法执行跟对方法执行

注意:

类第一次被载入时先执行static代码块;类多次载入时,static代码块只执行一次;static块经常用来进行static变量的初始化。

是在类初始化时执行,不是在创建对象时执行。

静态初始化块中不能访问非static成员。

构造块被被编译到将要执行的构造器代码之前执行

静态块,仅在类的第一次使用时加载。 构造块,先于构造器执行,每创建一个对象执行一次

debug

在学习或开发过程中,遇到bug是避免不了的,为了能够快速调试,可以使用debug调试工具。

调试一个Java程序非常简单的,主要有设置断点、启动调试、单步执行、结束调试几步。

debug界面窗口:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mhk7GIwa-1603181224478)(C:/Users/Administrator/Desktop/文章/images/20170212112040869)]

1)设置断点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-azMwaSAP-1603181224492)(C:/Users/Administrator/Desktop/文章/images/20170212133523789.png)]

2)启动调试

Eclipse提供几种方式来启动程序(Launch)的调试,分别是通过菜单(Run –> Debug)、图标(“绿色臭虫”)、右键->Debug As。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mnL2NI8o-1603181224497)(C:/Users/Administrator/Desktop/文章/images/20170212133853247)]

弹出提示,需要切换到调试(Debug)工作区,勾选“Remember my decision”,记住选择,则下次不再提示,然后点击【Yes】。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QzFpXftv-1603181224515)(C:/Users/Administrator/Desktop/文章/images/20170212133942295)]

3)单步执行

主要使用前面讲过的几个视图进行调试,其中debug视图中的几个按钮有快捷键:

Step Return(F7) : 表示退出当前方法,返回到调用层。

Step Over (F6) : 表示运行下一行代码。

Step Into (F5) : 表示进入当前方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lMRLpQOG-1603181224518)(C:/Users/Administrator/Desktop/文章/images/1581682185893.png)]

4)结束调试

通过Terminate命令终止对本地程序的调试。

面向对象-继承性

继承

“树上一只鸟树下两只兔子,请问几种动物 , 请问几种生物?” 这里面就存在了继承的概念。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ScQjHezm-1603181224521)(C:/Users/Administrator/Desktop/文章/images/1581683059636.png)]

继承:子承父业

继承的本质在于抽象。类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。

继承的作用 : 使用继承可以提高代码的复用性。

如何使用继承:

父类|超类|基类:根据一些列子类抽象,抽取像的部分,定义在父类中

子类|派生类:子类继承父类,有权使用父类中的内容,可以定义子类新增内容,所以说子类是父类的延续+扩展

extends 关键字的意思是“扩展”。子类是父类的扩展。

java 中使用 extends 关键字实现类的继承机制,语法规则:

<modifier> class <name> [extends <superclass>]{} //父类 class Person{ public String name; public int age; public void sleep(){ System.out.println("休息"); } } //子类 //教师类 class Teacher extends Person{ public String subject; public Teacher() { } public void teach(){ System.out.println("传授知识"); } } //学生类 class Student extends Person{ public String school; public Student() { } public void study(){ System.out.println("在知识的海洋畅游!"); } }

注意:

子类继承父类的成员变量和成员方法,但不继承父类的构造方法java中只有单继承 ,没有像c++那样的多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护。就像我们现实中,如果你有多个父母亲,那是一个多么混乱的世界啊。多继承,就是为了实现代码的复用性,却引入了复杂性,使得系统类之间的关系混乱。java中的多继承,可以通过接口来实现如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object。

继承的特点:

优点:

通过继承可以简化类的定义,实现代码的重用|提高代码复用性可以更好的扩展程序子类一旦继承父类,可以有权使用父类中的成员,也可以扩展定义子类独有内容java是单继承继承,实现简单

缺点:

子类与父类之间紧密耦合(耦合度高),子类依赖于父类的实现,子类缺乏独立性。不便于后期维护单继承一个子类只能有一个父类,不够灵活,不便于后期维护
最新回复(0)