Java继承的概念与实现

Java继承的概念与实现
Java继承的概念与实现

继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似。

继承可以理解为一个类从另一个类获取方法和属性的过程。如果类B继承于类A,那么B就拥有A的方法和属性。

继承使用 extends 关键字。(参考网站:https://www.360docs.net/doc/ef7993514.html,/RA5iKhq)

例如我们已经定义了一个类 People:

1class People{

2 String name;

3int age;

4int height;

5

6void say(){

7 System.out.println("我的名字是 " + name + ",年龄是 " + age + ",身高是 " + height);

8 }

9 }

如果现在需要定义一个类 Teacher,它也有 name、age、height 属性和 say() 方法,另外还需要增加 school、seniority、subject 属性和 lecturing() 方法,怎么办呢?我们要重新定义一个类吗?

完全没必要,可以先继承 People 类的成员,再增加自己的成员即可,例如:

1class Teacher extends People{

2 String school; // 所在学校

3 String subject; // 学科

4int seniority; // 教龄

5

6// 覆盖 People 类中的 say() 方法

7void say(){

8 System.out.println("我叫" + name + ",在" + school + "教" + subject + ",有" + seniority + "年教龄");

9 }

10

11void lecturing(){

12 System.out.println("我已经" + age + "岁了,依然站在讲台上讲课");

13 }

14 }

对程序的说明

?name 和 age 变量虽然没有在 Teacher 中定义,但是已在 People 中定义,可以直接拿来用。

?Teacher 是 People 的子类,People 是Teacher 类的父类。

?子类可以覆盖父类的方法。

?子类可以继承父类除private以为的所有的成员。

?构造方法不能被继承。

继承是在维护和可靠性方面的一个伟大进步。如果在 People 类中进行修改,那么Teacher 类就会自动修改,而不需要程序员做任何工作,除了对它进行编译。

单继承性:Java 允许一个类仅能继承一个其它类,即一个类只能有一个父类,这

个限制被称做单继承性。后面将会学到接口(interface)的概念,接口允许多继承。

最后对上面的代码进行整理:

1public class Demo {

2public static void main(String[] args) {

3 Teacher t = new Teacher();

4 https://www.360docs.net/doc/ef7993514.html, = "小布";

5 t.age = 70;

6 t.school = "清华大学";

7 t.subject = "Java";

8 t.seniority = 12;

9 t.say();

10 t.lecturing();

11 }

12}

13class People{

14 String name;

15int age;

16int height;

17

18void say(){

19 System.out.println("我的名字是 " + name + ",年龄是 " + age + ",身

高是 " + height);

20 }

21}

22class Teacher extends People{

23 String school; // 所在学校

24 String subject; // 学科

25int seniority; // 教龄

26

27// 覆盖 People 类中的 say() 方法

28void say(){

29 System.out.println("我叫" + name + ",在" + school + "教" + subject + ",有" + seniority + "年教龄");

30 }

31

32void lecturing(){

33 System.out.println("我已经" + age + "岁了,依然站在讲台上讲课");

34 }

35 }

运行结果:

我叫小布,在清华大学教Java,有12年教龄

我已经70岁了,依然站在讲台上讲课

注意:构造方法不能被继承,掌握这一点很重要。一个类能得到构造方法,只有两个办法:编写构造方法,或者根本没有构造方法,类有一个默认的构造方法。(更多关注尽在订阅号:javaedu)

JAVA基础测试及答案

第一单元Java基础知识测样 班级___________姓名:_____________得分:_____________ 一、选择题(每题2分,共40分) 1、下面哪项可以得到数组元素的个数,java中定义数组名为abc,(B) A、abc.length() B、abc.length C、len(abc) D、ubound(abc) 2、构造方法何时被调用(B) A.类定义时 B.创建对象时 C.调用对象方法时 D.使用对象的变量时 3、下列语句片段int a=10,b=4,c=20,d=6;System.out.println(a++*b+c*--d);的结果为 (C) A.144 B.28 C.140 D.不能执行 4、下面哪个修饰符修饰的方法只能被本类中的其他方法使用(C) A、protected B、static C、private D、public 5、编译并运行下述程序段的结果是:(A)。 public class Test{ public static void main(String argv[]){ int[]count=new int[4]; System.out.println(count[4]);}} A.编译时错误B.运行时错误C.输出0D.输出null 6、在java的一个异常处理中,哪个语句块可以有多个(A) A、catch B、finally C、try D、throws 7、若在某一个类定义中定义有如下的方法: final void aFinalFunction(); 则该方法属于(C)。 A.本地方法B.静态方法C.最终方法D.抽象方法 9、类Test1定义如下: 1)public class Test1{ 2)public float aMethod(float a,float b){} 3) 4)}将以下哪种方法插入行3是不合法的。(B) A、public float aMethod(float a,float b,float c){} B、public float aMethod(float c,float d){} C、public int aMethod(int a,int b){} D、private float aMethod(int a,int b,int c){}

基本概念

本篇校对说明 一.请依下述顺序排列各部份顺序 总论 CT MRI 神经系统 胸部 腹部 骨与关节 介入放射学 二.P3“肿块效应”条目移至总论节“伪影”条目之后。 三.为了不使手工修正误解,已另作出一份修正样本。附后 祁吉 09-07

基本概念是理解放射诊断学及相关内容的基础。医学是介于自然科学与社会科学之间的学科,因此基本概念还是需要在理解的基础上“死记硬背”的。本书中仅列出日常应用较多的120个基本概念,一些概念可以举一反三。实际操作中,涉及的基本概念远不止这些,需在实践中不断扩大理解和记忆。在学科进步中,一些概念的内涵还会发生变化,因此,对概念的理解还应随科学认识的发展不断修正。 总论 【X线的物理学效应】 X线的物理学效应(physical effect of X-ray)有:穿透性,荧光效应,感光效应,电离效应,光电效应,热效应,干涉、衍射、反射、折射、散射效应等。 【高仟伏X线】 高仟伏X线(high kilovoltage X-ray):波

长在0.12-0.05?(0.012-0.005nm)、光子能量为66~166KeV的高能X线。产生该波段X线的管电压为120-250kVp。应用高仟伏X线摄影可提供在较小密度范围内层次丰富的照片。 【软X线】 软X线(soft X-ray):波长在0.74-0.046nm(0.74-0.46?)范围、光子能量为17-26keV的低能量X线。由软X线机产生,产生该波段X线的管电压在25-40kVp。由于软X线的穿透能力小,临床上适用于软组织摄影。 【传统放射学】 传统放射学(conventional radiology):以X线透视和摄片为基本检查方法的医学成像科学。在现代医学成像方法(CT/MRI/DSA等)出现之前,这些基本检查方法已经沿用和不断改良了近80年,其中大部份至今仍在沿用,故统称以这些基本检查方法为基础的医学成像科学为传统放

编写一个JAVA程序片断 定义一个表示学生的类student

编写一个JAVA程序片断定义一个表示学生的类student,包括域"学号","班级","姓名","性别","年龄";方法"获得学号","获得班号","获得姓名","获得性别","获得年龄","修改年龄". 程序如下: import https://www.360docs.net/doc/ef7993514.html,ng.String; import https://www.360docs.net/doc/ef7993514.html,ng.System; import java.io.*; public class StudentManage { public static void main(String args[]) { Student myStudent=new Student(1234567,"023","hfx","male",21); System.out.println(myStudent.toString()); } } class Student { long studentNumber; String classNumber; String studentName; String studentSex; int studentAge; Student(long a,String s,String d,String f,int h) { studentNumber=a; classNumber=s; studentName=d; studentSex=f; studentAge=h; } void getNumber(long sno,String sna) { if(studentName==sna) studentNumber=sno; else System.exit(1); }

java基础知识点总结

Created by AIwen on 2017/5/14. java是面向对象的程序设计语言;类可被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量,它们将会引用到类的对象。类用于描述客观世界里某一类对象的共同特征,而对象则是类的具体存在,java程序使用类的构造器来创建该类的对象。 java也支持面向对象的三大特征:封装、继承、和多态。java提供了private、protected、和public三个访问控制修饰符来实现良好的封装,提供了extends关键字让子类继承父类,子类继承父类就可以继承到父类的成员变量和和方法,如果访问控制允许,子类实例可以直接调用父类里定义的方法。继承是实现类复用的重要手段。使用继承关系来实现复用时,子类对象可以直接赋给父类变量,这个变量具有多态性。 面向对象的程序设计过程中有两个重要的概念:类(Class)和对象(object,也被称为实例,instance)。类可以包含三种最常见的成员:构造器、成员变量、和方法。 构造器用于构造该类的实例,java语言通过new关键字类调用构造器,从而返回该类的实例。构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。因此java语言提供了一个功能:如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器,这个构造器总是没有参数的。一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。 构造器用于对类实例进行初始化操作,构造器支持重载,如果多个重载的构造器里包含了相同的初始化代码,则可以把这些初始化代码放置在普通初始化块里完成,初始化块总在构造器执行之前被调用。静态初始化块代码用于初始化类,在类初始化阶段被执行。如果继承树里某一个类需要被初始化时,系统将会同时初始化该类的所有父类。 构造器修饰符:可以是public、protected、private其中之一,或者省略构造器名:构造器名必须和类名相同。 注意:构造器既不能定义返回值类型,也不能使用void声明构造器没有返回值。如果为构造器定义了返回值类型,或使用void声明构造器没有返回值,编译时不会出错,但java会把这个所谓的构造器当成方法来处理——它就不再是构造器。 实际上类的构造器是有返回值的,当使用new关键字来调用构造器时,构造器返回该类的实例,可以把这个类的实例当成构造器的返回值。因此构造器的返回值类型总是当前类,无须定义返回值类型。不要在构造器里显式的使用return来返回当前类的对象,因为构造器的返回值是隐式的。 java类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。 成员变量: 成员变量的修饰符:public、protected、private、static、final前三个只能出现一个再和后面的修饰符组合起来修饰成员变量,也可省略。 成员变量:由一个或者多个有意义的单词连缀而成,第一个单词首字母小写,后面每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。 类型:可以是java语言允许的任何数据类型,包括基本类型和引用类型。 成员方法: 方法修饰符:public、protected、private、static、final、abstract,前三个只能出现一个,static和final最多只能出现其中的一个,和abstract组合起来使用。也可省略。 返回值类型:可以是java语言的允许的任何数据类型,包括基本类型和引用类型。 方法名:和成员变量的方法命名规则相同,通常建议方法名以英文动词开头。 方法体里多条可执行语句之间有严格的执行顺序,排在方法体前面的语句总先执行,排在方法体后面的语句总是后执行。 static是一个特殊的关键字,它可用于修饰方法、成员变量等成员。static修饰的成员表明它属于这个类本身,而

曲式分析基本概念

乐思:即音乐的思想材料,构成音乐语言的素材,规模可大可小,小至音调和动机,其次是乐节、乐句、乐段等,大至完整的主题。主题:鲜明的形象性,一定的完成性 动机:最小规模的乐思,是音乐结构中的最小单位,是乐节的再划分部分,典型的动机包含一个节拍重音,即相当于一小节。音调:区别不同音乐形象的乐思,与动机着眼点不同 音型:旋律、结构、和声进行的乐思,与动机着眼点不同 乐思陈述的类型:呈示性、展开性、过渡性、收束性、导入性 音乐曲式的功能:三个主要功能(陈述、对比、再现)和三个辅助功能(引子、连接、结束)主题的陈述的特点:主题的统一、调性的统一、结构的统一 乐段:是构成独立段落的最小的结构。 乐段的特征:1、建立在单一主题上的、最小的完整曲式2、乐段的组成部分是乐句3、这些乐句之间具有问答呼应的关系,乐句数量不一定4、主调音乐风格的乐段,和声和旋律的完满终止时乐段结束时的典型标志5、大多数乐段的陈述时呈示型的6、乐段可以作为独立乐曲的曲式,也可以是较大型作品的一部分 乐段的类型:单乐段、平行复乐段、三重乐段、四重乐段、乐段聚集 单乐段:是包含一个乐段的结构。划分依据:1、依据和声:开放性乐段、收拢性乐段、转调乐段。2、依据主题材料及乐思发展的状况。3、依据乐段拥有乐句数量:二乐句乐段、三乐句乐段、四乐句乐段、多乐句乐段、单乐句数段。4、依据结构的模式:方整性乐段、非方整性乐段(基数节,前后两句乐节数量不等) 两乐句乐段:平行结构和对比结构。平行结构是指两乐句开头的主题材料基本相同,而落音或终止式不同。平行两乐句乐段常见的平行情况有:两乐句开头相同、第二乐句为第一乐句的模进或移调、第二乐句是第一乐句主题旋律的反向等。对比结构是指两乐句开头的主题材料基本不同,但仍保持着一定的呼应关系 平行复乐段:(三个条件缺一不可)1、两个大乐句开头的主题材料相同或相似2、大乐句的内部能够划分小乐句3、大乐句末尾的终止式不同,形成呼应。 单二部曲式:单二部曲式由两个部分组成,通常第一部分为乐段,第二部分为乐段或规模相当于乐段的段落。图式:ab由于发展主题的不同方式,二部曲式可以分为两种基本类型:单主题二部曲式、对比主题二部曲式(ab之间的区别可达到对比的程度) 单二部曲式因第二部分是否再现第一部分的主题因素,又可分为:有再现部的单二部曲式(第二部分在收束时再现第一部分的一个乐句,整个第二部分由相当于一个乐句的规模的中部和是乐句的再现部组成)、没有再现的单二部曲式 有再现的单二部曲式与单三部曲式的区别: 1、中部和再现部能分开单独成乐段的篇幅相当的、中部可能会做更大幅度的展开的是单三;中部与再现部合并的是单二。 2、再现部规模不同 单三的中部的类型:1单主题的中部:第一部分主题移到从属调或将第一部分主题材料进行分裂展开2对比主题的中部:与第一部分形成对比的另一个呈示部的乐段3合成性的中部:中部有两个或两个以上的部分联合形成 回旋曲式:基本主题(称为“主部”或“迭句”)出现三次以上,中间插入互不相同的段落(称为“插部”)。图式:abaca……. 17世纪~18世纪上半叶:单主题回旋曲式(古回旋曲式)——各个插部通常取材于主部主题,与逐步形成不大的对比 18世纪后半叶以后的世态风俗性回旋曲:对比主题回旋曲式(古典回旋曲式)——各个插部都和主部形成对比、与古回旋曲式完全不同

JAVA线程池原理333

在什么情况下使用线程池? 1.单个任务处理的时间比较短 2.将需处理的任务的数量大 使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。 线程池工作原理:

线程池为线程生命周期开销问题和资源不足问题提供了解决方案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。其好处是,因为在请求到达时线程已经存在,所以无意中也消除了线程创建所带来的延迟。这样,就可以立即为请求服务,使应用程序响应更快。而且,通过适当地调整线程池中的线程数目,也就是当请求的数目超过某个阈值时,就强制其它任何新到的请求一直等待,直到获得一个线程来处理为止,从而可以防止资源不足。 线程池的替代方案 线程池远不是服务器应用程序内使用多线程的唯一方法。如同上面所提到的,有时,为每个新任务生成一个新线程是十分明智的。然而,如果任务创建过于频繁而任务的平均处理时间过短,那么为每个任务生成一个新线程将会导致性能问题。 另一个常见的线程模型是为某一类型的任务分配一个后台线程与任务队列。AWT 和 Swing 就使用这个模型,在这个模型中有一个 GUI 事件线程,导致用户界面发生变化的所有工作都必须在该线程中执行。然而,由于只有一个 AWT 线程,因此要在 AWT 线程中执行任务可能要花费相当长时间才能完成,这是不可取的。因此,Swing 应用程序经常需要额外的工作线程,用于运行时间很长的、同 UI 有关的任务。 每个任务对应一个线程方法和单个后台线程(single-background-thread)方法在某些情形下都工作得非常理想。每个任务一个线程方法在只有少量运行时间很长的任务时工作得十分好。而只要调度可预见性不是很重要,则单个后台线程方法就工作得十分好,如低优先级后台任务就是这种情况。然而,大多数服务器应用程序都是面向处理大量的短期任务或子任务,因此往往希望具有一种能够以低开销有效地处理这些任务的机制以及一些资源管理和定时可预见性的措施。线程池提供了这些优点。 工作队列 就线程池的实际实现方式而言,术语“线程池”有些使人误解,因为线程池“明显的”实现在大多数情形下并不一定产生我们希望的结果。术语“线程池”先于Java 平台出现,因此它可能是较少面向对象方法的产物。然而,该术语仍继续广泛应用着。 虽然我们可以轻易地实现一个线程池类,其中客户机类等待一个可用线程、将任务传递给该线程以便执行、然后在任务完成时将线程归还给池,但这种方法却存在几个潜在的负面影响。例如在池为空时,会发生什么呢?试图向池线程传递任务的调用者都会发现池为空,在调用者等待一个可用的池线程时,它的线程将阻塞。我们之所以要使用后台线程的原因之一常常是为了防止正在提交的线程被阻塞。完全堵住调用者,如在线程池的“明显的”实现的情况,可以杜绝我们试图解决的问题的发生。 我们通常想要的是同一组固定的工作线程相结合的工作队列,它使用 wait() 和

小学数学基础知识基本概念总结

小学数学的基础知识、基本概念 自然数 用来表示物体个数的0、1、2、3、4、5、6、7、8、9、10……叫做自然数。 整数 自然数都是整数,整数不都是自然数。 小数 小数是特殊形式的分数。但是不能说小数就是分数。 混小数(带小数) 小数的整数部分不为零的小数叫混小数,也叫带小数。 纯小数 小数的整数部分为零的小数,叫做纯小数。 循环小数 小数部分一个数字或几个数字依次不断地重复出现,这样的小数叫做循环小数。例如:0.333……,1.2470470470……都是循环小数。 纯循环小数 循环节从十分位就开始的循环小数,叫做纯循环小数。例如:,。混循环小数 与纯循环小数有唯一的区别:不是从十分位开始循环的循环小数,叫混循环小数。例如,,。 有限小数 小数的小数部分只有有限个数字的小数(不全为零)叫做有限小数。 无限小数 小数的小数部分有无数个数字(不包含全为零)的小数,叫做无限小数。循环小数都是无限小数,无限小数不一定都是循环小数。例如,圆周率π也是无限小数。 分数

十进制 十进制计数法是世界各国常用的一种记数方法。特点是相邻两个单位之间的进率都是十。10个较低的单位等于1个相邻的较高单位。常说“满十进一”,这种以“十”为基数的进位制,叫做十进制。 加法 把两个数合并成一个数的运算,叫做加法,其中两个数都叫“加数”,结果叫“和”。 减法 已知两个加数的和与其中一个加数,求另一个加数的运算,叫做减法。减法是加法的逆运算。其中“和”叫“被减数”,已知的加数叫“减数”,求出的另一个加数叫“差”。 乘法 求n个相同加数的和的简便运算,叫做乘法。其中相同的这个数及n个这样的数都叫“因数”,结果叫“积”。 除法 已知两个因数的积与其中一个因数,求另一个因数的运算,叫做除法。除法是乘法的逆运算。其中“积”叫做“被除数”,已知的一个因数叫做“除数”,求出来的另一个因数叫做“商”。 加、减法的运算定律 加法交换律:两个数相加,交换两个加数的位置,和不变,叫做加法交换律。 加法结合律:三个数相加,先把前二个数相加,再加第三个数,或者,先把后二个数相加,再加上第一个数,其和不变。这叫做加法结合律。 在减法中,被减数、减数同时加上或者减去一个数,差不变。 在减法中,被减数增加多少或者减少多少,减数不变,差随着增加或者减少多少。反之,减数增加多少或者减少多少,被减数不变,差随着减少或者增加多少。 在减法中,被减数减去若干个减数,可以把这些减数先加,差不变。 乘、除法运算定律 乘法的交换律:两个数相乘,交换两个因数的位置,积不变。这叫做乘法的交换律。

java基本概念

Java基本概念 1.面向过程的程序设计:所谓面向过程是指从功能的角度分析问题,将待解决的问题空间 分解成若干个功能模块,每个功能模块描述一个操作的具体过程。结构化程序设计方法就是面向过程的一个典型代表。 2.结构化程序设计方法的核心:自顶向下、逐步求精的开发方法;模块化的组织方式;结 构化的语句结构 3.结构化程序设计的特点:程序设计=数据结构+算法 程序内容=过程+过程调用 4.面向对象的程序设计: 面向对象程序设计方法是指用面向对象的方法指导程序设计的整 个过程,所谓面向对象是指以对象为中心,分析、设计及构造应用程序的机制。 5.面向对象程序设计的优点:实现对现实世界客体的自然描述;可控制程序的复杂性;可增 强程序的模块性;可提高程序的重用性;可改善程序的可维护性.面向对象程序=对象+消息. 6.抽象:指从事物中,舍弃个别的、非本质的属性,抽取出共同的、本质的属性的过程, 它是形成概念的必要手段。 抽象包括过程抽象和数据抽象。 过程抽象是指功能抽象,即舍弃个别的功能,抽取共同拥有的功能。 数据抽象是一种更高级别的抽象方法,它将现实世界中存在的客体作为抽象单元,其抽象内容既包括客体的属性特征,也包括行为特征,它是面向对象程序设计所采用的核心方法。模块化和信息隐蔽是数据抽象过程的两个主要概念。 7.封装:封装是指将现实世界中某个客体的属性与行为聚集在一个逻辑单元内部的机制。 利用这种机制可以将属性信息隐藏起来,外界只能够通过提供的特定行为接口改变或获取其属性状态。 在面向对象的程序设计中,封装是指将对象的属性和行为分别用数据结构和方法描述,并将它们绑定在一起形成一个可供访问的基本逻辑单元。 8.对象:对象是用来描述现实世界中客体的部件,是面向对象软件系统在运行时刻的基本 单位。为了区分属于同一个类的不同对象,每个对象都有一个惟一的标识。 对象是具有特殊属性和方法(行为方式、操作)的实体。是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。 9. 重载:在 Java 语言中,同一个成员方法名在同一个作用域中可以被定义多次,但要求 参数表不能完全一样。调用成员方法时,系统将通过成员方法名和参数确定所调用的具体方法。这种现象叫做成员方法的重载。 10.类:类是一组具有相同属性特征的对象的抽象描述,是面向对象程序设计的又一个核心 概念。 类是对象抽象的结果。有了类,对象就是类的具体化,是类的实例。类可以有子类,同样也可以有父类,从而构成类的层次结构。 类之间主要存在三种关系。它们是:关联、聚合和泛化。 11.消息:消息是一个对象要求另一个对象实施某项操作的请求。在一条消息中,需要包含 消息的接收者和要求接收者执行哪项操作的请求,而并没有说明应该怎样做,具体的操作过程由接收者自行决定。 12.消息传递是对象之间相互联系的惟一途径。发送者发送消息,接收者通过调用相应的方 法响应消息,这个过程被不断地重复,使得应用程序在人的有效控制下运转起来,最终得到相应的结果。可以说,消息是驱动面向对象程序运转的源泉。

Java多线程技术及案例

Java多线程技术及案例 进程和线程: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。 线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。 多进程是指操作系统能同时运行多个任务(程序)。 多线程是指在同一程序中有多个顺序流在执行。 Java中多线程的多种实现方式 Java中有多种多线程实现方法,主要是继承https://www.360docs.net/doc/ef7993514.html,ng.Thread类的方法和 https://www.360docs.net/doc/ef7993514.html,ng.Runnable接口的方法。 继承Thread类 Thread是https://www.360docs.net/doc/ef7993514.html,ng包中的一个类,从这个类中实例化的对象代表线程,启动一个新线程需要建立一个Thread实例。 使用Thread类启动新的线程的步骤如下: 1.实例化Thread对象 2.调用start()方法启动线程 构造方法:

public Thread(String threadName); public Thread(); 例程: publicclass Thread1extends Thread{//定义一个类继承Thread privateint count=1000; publicvoid run(){//重写run方法 while(true){ System.out.print(count+" "); if(--count==0){ return; } } } publicstaticvoid main(String[] args){ Thread1 th1=new Thread1();//实例化继承了Thread的类 Thread1 th2=new Thread1(); th1.start();//调用start()方法, th2.start(); for(int i=0;i<1000;i++){ System.out.print("A "); } }

基础概念

问答题 1、继电保护的用途是什么? 答:①、当电网发生足以损坏设备或危及电网安全运行的故障时,使被保护设备快速脱离电网;②、对电网的非正常运行及某些设备的非正常状态能及时发出警报信号,以便迅速处理,使之恢复正常;③、实现电力系统自动化和远动化,以及工业生产的自动控制。 2、继电保护装置的基本原理是什么? 答:电力系统发生故障时,基本特点是电流突增,电压突降,以及电流与电压间的相位角发生变化,各种继电保护装置正是抓住了这些特点,在反应这些物理量变化的基础上,利用正常与故障,保护范围内部与外部故障等各种物理量的差别来实现保护的,有反应电流升高而动作的过电流保护,有反应电压降低的低电压保护,有即反应电流又反应相角改变的过电流方向保护,还有反应电压与电流比值的距离保护等等。 3、对继电器有哪些要求? 答:①、动作值的误差要小;②、接点要可靠;③、返回时间要短;④、消耗功率要小。 4、常用继电器有哪几种类型? 答:按感受元件反应的物理量的不同,继电器可分为电量的和非电量的两种,属于非电量的有瓦斯继电器、速度继电器、温度继电器等。 反应电量的种类较多一般分为: ①、按动作原理分为:电磁型、感应型、整流型、晶体管型;②、按反应电量的性质有:电流继电器和电压继电器;③、按作用可分为:电间继电器、时间继电器、信号继电器等。 5、感应型电流继电器的检验项目有哪些? 答:感应型电流继电器是反时限过流继电器,它包括感应元件和速断元件,其常用型号为GL-10和GL-20两种系列,在验收和定期检验时,其检验项目如下: ①、外部检查;②、内部和机械部分检查;③、绝缘检验;④、始动电流检验;⑤、动作及返回值检验;⑥、速动元件检验;⑦、动作时间特性检验;⑧、接点工作可靠性检验。 6、怎样正确使用接地摇表? 答:测量前,首先将两根探测针分别插入地中接地极E,电位探测针P和电流探测针C 成一直线并相距20米,P插于E和C之间,然后用专用导线分别将E、P、C接到仪表的相应接线柱上。

材料科学基础基本概念

晶体缺陷 单晶体:是指在整个晶体内部原子都按照周期性的规则排列。 多晶体:是指在晶体内每个局部区域里原子按周期性的规则排列,但不同局部区域之间原子的排列方向并不相同,因此多晶体也可看成由许多取向不同的小单晶体(晶粒)组成 点缺陷(Point defects):最简单的晶体缺陷,在结点上或邻近的微观区域内偏离晶体结构的正常排列。在空间三维方向上的尺寸都很小,约为一个、几个原子间距,又称零维缺陷。包括空位vacancies、间隙原子interstitial atoms、杂质impurities、溶质原子solutes等。 线缺陷(Linear defects):在一个方向上的缺陷扩展很大,其它两个方向上尺寸很小,也称为一维缺陷。主要为位错dislocations。 面缺陷(Planar defects):在两个方向上的缺陷扩展很大,其它一个方向上尺寸很小,也称为二维缺陷。包括晶界grain boundaries、相界phase boundaries、孪晶界twin boundaries、堆垛层错stacking faults等。 晶体中点阵结点上的原子以其平衡位置为中心作热振动,当振动能足够大时,将克服周围原子的制约,跳离原来的位置,使得点阵中形成空结点,称为空位vacancies 肖脱基(Schottky)空位:迁移到晶体表面或内表面的正常结点位置,使晶体内部留下空位。弗兰克尔(Frenkel)缺陷:挤入间隙位置,在晶体中形成数目相等的空位和间隙原子。 晶格畸变:点缺陷破坏了原子的平衡状态,使晶格发生扭曲,称晶格畸变。从而使强度、硬度提高,塑性、韧性下降;电阻升高,密度减小等。 热平衡缺陷:由于热起伏促使原子脱离点阵位置而形成的点缺陷称为热平衡缺陷(thermal equilibrium defects),这是晶体内原子的热运动的内部条件决定的。 过饱和的点缺陷:通过改变外部条件形成点缺陷,包括高温淬火、冷变形加工、高能粒子辐照等,这时的点缺陷浓度超过了平衡浓度,称为过饱和的点缺陷(supersaturated point defects) 。 位错:当晶格中一部分晶体相对于另一部分晶体发生局部滑移时,滑移面上滑移区与未滑移区的交界线称作位错 刃型位错:当一个完整晶体某晶面以上的某处多出半个原子面,该晶面象刀刃一样切入晶体,这个多余原子面的边缘就是刃型位错。 刃型位错线可以理解为已滑移区和未滑移区的分界线,它不一定是直线 螺型位错:位错附近的原子是按螺旋形排列的。螺型位错的位错线与滑移矢量平行,因此一定是直线 混合位错:一种更为普遍的位错形式,其滑移矢量既不平行也不垂直于位错线,而与位错线相交成任意角度。可看作是刃型位错和螺型位错的混合形式。 柏氏矢量b: 用于表征不同类型位错的特征的一个物理参量,是决定晶格偏离方向与大小的向量,可揭示位错的本质。 位错的滑移(守恒运动):在外加切应力作用下,位错中心附近的原子沿柏氏矢量b方向在滑移面上不断作少量位移(小于一个原子间距)而逐步实现。 交滑移:由于螺型位错可有多个滑移面,螺型位错在原滑移面上运动受阻时,可转移到与之相交的另一个滑移面上继续滑移。如果交滑移后的位错再转回到和原滑移面平行的滑移面上继续运动,则称为双交滑移。 位错滑移的特点 1) 刃型位错滑移的切应力方向与位错线垂直,而螺型位错滑移的切应力方向与位错线平行; 2) 无论刃型位错还是螺型位错,位错的运动方向总是与位错线垂直的;(伯氏矢量方向代表

java类名命名规范

竭诚为您提供优质文档/双击可除 java类名命名规范 篇一:java各种命名规范 定义规范的目的是为了使项目的代码样式统一,使程序有良好的可读性。 包的命名(全部小写,由域名定义) java包的名字都是由小写单词组成。但是由于java面向对象编程的特性,每一名java程序员都可以编写属于自己的java包,为了保障每个java包命名的唯一性,在最新的java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程 序包的唯一前缀。 例如:net.frontfree.javagroup 类的命名(单词首字母大写) 根据约定,java类名通常以大写字母开头,如果类名称由多个单词组成,则每个单词的首字母均应为大写例如testpage;如果类名称中包含单词缩写,则这个缩写词的每个字母均应大写,如:xmlexample,还有一点命名技巧就是

由于类是设计用来代表对象的,所以在命名类时应尽量选择名词。 例如:graphics 方法的命名(首字母小写,字母开头大写) 方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。例如:drawimage 常量的命名(全部大写,常加下划线) 常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词。 例如:max_Value 参数的命名 参数的命名规范和方法的命名规范相同,而且为了避免阅读程序时造成迷惑,请在尽量保证参数名称为一个单词的情况下使参数的命名尽可能明确。 javadoc注释 java除了可以采用我们常见的注释方式之外,java语言规范还定义了一种特殊的注释,也就是我们所说的javadoc注释,它是用来记录我们代码中的api的。javadoc 注释是一种多行注释,以/**开头,而以*/结束,注释可以包含一些html标记符和专门的关键词。使用javadoc注释的好处是编写的注释可以被自动转为在线文档,省去了单独

数学基本概念

基本概念 第一章数和数的运算一概念(一)整数 1整数的意义:自然数和0都是整数。2自然数: 我们在数物体的时候,用来表示物体个数的1,2,3……叫做自然数。一个物体也没有,用0表示。0也是自然数。3计数单位 一(个)、十、百、千、万、十万、百万、千万、亿……都是计数单位。每相邻两个计数单位之间的进率都是10。这样的计数法叫做十进制计数法。4数位:计数单位按照一定的顺序排列起来,它们所占的位置叫做数位。5数的整除 整数a除以整数b(b≠0),除得的商是整数而没有余数,我们就说a 能被b整除,或者说b能整除a。如果数a能被数b(b≠0)整除,a就叫做b的倍数,b就叫做a的约数(或a的因数)。倍数和约数是相互依存的。 因为35能被7整除,所以35是7的倍数,7是35的约数。 一个数的约数的个数是有限的,其中最小的约数是1,最大的约数是它本身。例如:10的约数有1、2、5、10,其中最小的约数是1,最大的约数是10。 一个数的倍数的个数是无限的,其中最小的倍数是它本身。3的倍数有:3、6、9、12……其中最小的倍数是3,没有最大的倍数。 个位上是0、2、4、6、8的数,都能被2整除,例如:202、480、304,都能被2整除。。个位上是0或5的数,都能被5整除,例如:5、30、405都能被5整除。。

一个数的各位上的数的和能被3整除,这个数就能被3整除,例如:12、108、204都能被3整除。一个数各位数上的和能被9整除,这个数就能被9整除。 能被3整除的数不一定能被9整除,但是能被9整除的数一定能被3整除。 一个数的末两位数能被4(或25)整除,这个数就能被4(或25)整除。例如:16、404、1256都能被4整除,50、325、500、1675都能被25整除。 一个数的末三位数能被8(或125)整除,这个数就能被8(或125)整除。例如:1168、4600、5000、12344都能被8整除,1125、13375、5000都能被125整除。能被2整除的数叫做偶数。不能被2整除的数叫做奇数。 0也是偶数。自然数按能否被2整除的特征可分为奇数和偶数。 一个数,如果只有1和它本身两个约数,这样的数叫做质数(或素数),100以内的质数有:2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97。一个数,如果除了1和它本身还有别的约数,这样的数叫做合数,例如4、6、8、9、12都是合数。 1不是质数也不是合数,自然数除了1外,不是质数就是合数。如果把自然数按其约数的个数的不同分类,可分为质数、合数和1。

手把手教你做一个java线程池小例子

废话不多说开整 我用的是eclipse(这应该没多大影响) 建一个工程java工程和web工程都行然后建一个包建一个类带main方法 首先贴出来的是内部类 //继承了runnable接口 class MyTask implements Runnable { private int taskNum; public MyTask(int num) { this.taskNum = num; } @Override public void run() { System.out.println("正在执行task "+taskNum); try { //写业务 Thread.currentThread().sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("task "+taskNum+"执行完毕!"); } } 接下来就是这个类 public class testOne { public static void main(String[] args) { ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 7, 10, https://www.360docs.net/doc/ef7993514.html,LISECONDS, new ArrayBlockingQueue(2),new ThreadPoolExecutor.DiscardOldestPolicy() );

for(int i=0;i<15;i++){ MyTask myTask = new MyTask(i); executor.execute(myTask); System.out.println("线程池中线程数目: "+executor.getPoolSize()+"队列等待执行的任务数目:"+ executor.getQueue().size()+"已经执行完别的任务数目: "+executor.getCompletedTaskCount()); } executor.shutdown(); } } 接下来在说明一下ThreadPoolExecutor的参数设置ThreadPoolExecutor(int corePoolSize,//线程池维护线程的最少数量 int maximumPoolSize,//线程池维护线程的最大数量 long keepAliveTime,//线程池维护线程所允许的空闲时间 TimeUnit unit, 线程池维护线程所允许的空闲时间单位 BlockingQueue workQueue,线程池所使用的缓存队列 RejectedExecutionHandler handler线程池对拒绝任务的处理策略 ) handler有四个选择: ThreadPoolExecutor.AbortPolicy() 抛出java.util.concurrent.RejectedExecutionException异常 ThreadPoolExecutor.CallerRunsPolicy() 重试添加当前的任务,他会自动重复调用execute()方法 ThreadPoolExecutor.DiscardOldestPolicy() 抛弃旧的任务 ThreadPoolExecutor.DiscardPolicy() 抛弃当前的任务 上面是一个例子接下来再来一个例子

机械基础基本概念

第一讲机械基础基本概念 学习目标及考纲要求 1.了解机械、机器、机构、构件、零件的概念。 2.理解机器与机构、构件与零件的区别。 3.掌握运动副的概念,熟悉运动副的类型,了解其使用特点,同时能举出应用实例。 知识梳理 一、机器和机构 1.机器 (1)任何机器都是由许多实物(构件)组合而成的。 (2)各运动实体之间具有确定的相对运动。 (3)能代替或减轻人类的劳动,完成有用的机械功或实现能量的转换。 发动机:将非机械能转换成机械能的机器。 电动机:电能→机械能、内燃机:热能→机械能 空气压缩机:气压能→机械能 按用途分类 工作机:用来改变被加工物料的位置、形状、性能、和状态的机器。 如机床、纺织机、轧钢机、输送机、汽车、飞机等。 2.机构 (1)任何机器都是由许多实物(构件)组合而成的。 (2)各运动实体之间具有确定的相对运动。 机器与机构的异同点 相同点:从结构与运动角度来看,机器与机构是相同的。 不同点:区别主要在于功用不同,机器的主要功用是利用机械能做功或实现能量转换,机构的主要功用在于传递或改变运动的形式。 机器与机构的总称为机械。 3. 机器的组成 动力部分:机器动力的来源。如电动机、内燃机和空气压缩机等。 传动部分:将动力部分的运动和动力传递给工作部分的中间环节。如齿轮传动。 工作部分:直接完成机器工作任务的部分,通常处于整个传动装置的终端,其结 构形式取决于机器的用途。如金属切削机床的主轴、拖板、工作台等。 自动控制部分:智能部分(与近代机器的区别)

二、构件和零件 1.构件 ⑴定义:构件是机构的运动单元体,也就是相互之间能作相对运动的物体。 固定构件:又称机架,一般用来支承运动构件,通常是机器的基体 或机座,例如各类机床的床身。 主动件:带动其他可动构件运动的构件。 按运动状况 运动构件 从动件:机构中除了主动件以外随着主动件运动而运 动的构件。 2.零件 定义:零件是构件的组成部分,是机器中的制造单元。 3.构件与零件联系与区别 联系:构件可以是一个零件,也可以是几个零件组成。 区别:构件是运动的单元体,零件是加工制造的单元体。 三、运动副 1.运动副概念 定义:两构件直接接触,又能产生一定相对运动的连接称为运动副。 2.运动副类型 转动副:两构件只能绕某一轴线作相对转动的运动副。 低副移动副两构件只能作相对直线移动的运动副。 (面接触) 按接触形螺旋副两构件只能沿轴线作相对螺旋运动的运动副。 式的不同 高副 (点、线接触) 3.低副和高副的特点 低副:面接触,容易制造和维修,承受载荷时单位面积压力较低,不能传递较复杂的运动,效率低、摩擦大。 高副:点或线接触,承受载荷时单位面积压力较高,两构件接触处容易磨损,寿命短,制造和维修也较困难,能传递较复杂的运动。 4.低副机构和高副机构 机构中所有运动副均为低副的机构称为低副机构。 机构中至少有一个运动副是高副的机构称为高副机构。 四、机构运动简图 简单线条和符号来表示构件和运动副,并按比例绘制出各运动副的位置。这种表达机构

java基本概念总结

小结 1、对象的初始化 (1) 非静态对象的初始化 在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。 ※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。 构造方法的作用就是初始化。 (2) 静态对象的初始化 程序中主类的静态变量会在main方法执行前初始化。 不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。 2、继承时,对象的初始化过程 (1) 主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。 (2) 主类静态成员的初始化。 (3) 主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个超类的默认构造 方法前,先进行对此超类进行非静态对象的初始化。 (4) 主类非静态成员的初始化。 (5) 调用主类的构造方法。 3、关于构造方法 (1) 类可以没有构造方法,但如果有多个构造方法,就应该要有默认的构造方法,否则在继承此类时,需要在子类中显式调用父类的某一个非默认的构造方法了。 (2) 在一个构造方法中,只能调用一次其他的构造方法,并且调用构造方法的语句必须是第一条语句。 4、有关public、private和protected (1) 无public修饰的类,可以被其他类访问的条件是:a.两个类在同一文件中,b.两个类 在同一文件夹中,c.两个类在同一软件包中。 (2) protected:继承类和同一软件包的类可访问。 (3) 如果构造方法为private,那么在其他类中不能创建该类的对象。 5、抽象类 (1) 抽象类不能创建对象。 (2) 如果一个类中一个方法为抽象方法,则这个类必须为abstract抽象类。 (3) 继承抽象类的类在类中必须实现抽象类中的抽象方法。 (4) 抽象类中可以有抽象方法,也可有非抽象方法。抽象方法不能为private。 (5) 间接继承抽象类的类可以不给出抽象方法的定义。 6、final关键字 (1) 一个对象是常量,不代表不能转变对象的成员,仍可以其成员进行操作。

java深入理解线程池

深入研究线程池 一.什么是线程池? 线程池就是以一个或多个线程[循环执行]多个应用逻辑的线程集合. 注意这里用了线程集合的概念是我生造的,目的是为了区分执行一批应用逻辑的多个线程和 线程组的区别.关于线程组的概念请参阅基础部分. 一般而言,线程池有以下几个部分: 1.完成主要任务的一个或多个线程. 2.用于调度管理的管理线程. 3.要求执行的任务队列. 那么如果一个线程循环执行一段代码是否是线程池? 如果极端而言,应该算,但实际上循环代码应该算上一个逻辑单元.我们说最最弱化的线程池 应该是循环执行多个逻辑单元.也就是有一批要执行的任务,这些任务被独立为多个不同的执行单元.比如: int x = 0; while(true){ x ++; } 这就不能说循环中执行多个逻辑单元,因为它只是简单地对循环外部的初始变量执行++操作. 而如果已经有一个队列 ArrayList al = new ArrayList(); for(int i=0;i<10000;i++){ al.add(new AClass()); } 然后在一个线程中执行: while(al.size() != 0){ AClass a = (AClass)al.remove(0); a.businessMethod(); } 我们说这个线程就是循环执行多个逻辑单元.可以说这个线程是弱化的线程池.我们习惯上把这些相对独立的逻辑单元称为任务. 二.为什么要创建线程池? 线程池属于对象池.所有对象池都具有一个非常重要的共性,就是为了最大程度复用对象.那么 线程池的最重要的特征也就是最大程度利用线程. 从编程模型模型上说讲,在处理多任务时,每个任务一个线程是非常好的模型.如果确实可以这么做我们将可以使用编程模型更清楚,更优化.但是在实际应用中,每个任务一个线程会使用系统限入"过度切换"和"过度开销"的泥潭. 打个比方,如果可能,生活中每个人一辆房车,上面有休息,娱乐,餐饮等生活措施.而且道路交道永远不堵车,那是多么美好的梦中王国啊.可是残酷的现实告诉我们,那是不可能的.不仅每个人一辆车需要无数多的社会资源,而且地球上所能容纳的车辆总数是有限制的. 首先,创建线程本身需要额外(相对于执行任务而必须的资源)的开销.

相关文档
最新文档