Java面向对象程序设计完整版课件全书电子教案教材课件(完整).ppt
一Java入门第章课程简介(或回顾)课程的地位、作用与本学期其他课程的联系课程内容介绍重点难点目标了解 Java语言的特点掌握 Java的执行过程掌握 Java的基本编写结构概述在程序设计中,面向对象概念已经深入人心 Java是一种完全面向对象的语言 Java是一种比较简单的语言 本章主要讲述:Java语言的特点Java的编译运行环境Java程序的基本编写结构Java简介Java的前身:Oak语言Java以其优异的功能,在全球信息网的平台上撰写高互动性的网页程序(Applet)Java之父-James Gosling Java Logo Java 语法简介Java的语法和C语言大致上是一样的基本数据类型大致相同:int、long、float、double、char等分支结构:ifelse、switchcase循环结构:for、while、dowhile 其他:break、continue、return、static等Java 语法简介Java是面向对象的语言,与C+类似Java改进了C+中的一些缺点,并且增加了一些新的优点 与C+相比,Java更简单、更容易学习 Java 语法简介Java中去掉的部分有:指针,预处理指令等不支持多重继承Java中新增加的部分有:资源回收(Garbage Collection)错误处理(Exception)新的修饰词(abstract、native、final)等Java语言的特点简单面向对象分布式健壮性安全性体系结构中立可移植性(跨平台运行)解释执行 Java环境免费的Java开发工具集(Java Developers Kits,简称JDK)集成开发环境如Eclipse、JBuilder等Java编译环境sun公司提供了最新版本JDK5.0,下载网址:http:/ JDK安装后的目录结构:bin目录:存放可执行文件lib目录:存放Java的类库文件include目录:存放用于本地方法的文件demo目录:存放演示程序jre目录:存放Java运行环境文件 Java编译环境在安装完JDK后需要把安装好的JDK路径加入到执行路径中:演示配置演示配置Java路径路径Java程序的执行过程Java的跨平台是通过Java虚拟机(JVM)来实现的。JVM是一个抽象的计算机。Java源程序经过编译器编译变成字节码字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器 解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行 编译虚拟机执行Java源代码Java字节码和操作系统相关的二进制码Java程序的执行过程Java字节码的执行方式有两种:即时编译方式 解释执行方式(最常用的方式)解释执行过程分三部进行:代码的装入代码的校验代码的执行 Java程序的执行过程JDK下用于编译和执行Java程序的命令:Javac 编译Java源程序,生成Java字节码 Java 解释执行Java字节码第一个Java应用程序MyFirstApp.java 源文件/定义一个公有的类,类名为定义一个公有的类,类名为MyFirstApppublic class MyFirstApp /Java中的中的main主函数主函数 public static void main(String args)/*输出输出 欢迎来到欢迎来到wish*/System.out.println(欢迎来到欢迎来到wish);注意:Java源文件的后缀名为.javaJava源程序由类组成,声明类的关键字为class在Java语言中严格区分大小写如果一个Java类用public修饰,则该类所在的源文件名必须与类名相同Java小应用程序Java程序有两种主要类型:独立的Java应用程序(Application)Java小应用程序(Applet)Applet是在Web页上运行的Java程序。Applet可以直接与使用浏览器的用户进行交互。JavaScript和Java JavaScript是一种仅能应用于Web页和浏览器上的程序语言 JavaScript是内嵌于HTML文档中的一小段代码,可以让HTML文档更加灵活地显示内容 JavaScript和Java源程序很相似,但是实际上两者完全不同。总结Java是从c/c+演变过来的,有着很多与c语言相同或类似之处,如基本数据类型,流程控制结构,区分大小写等Java是一种简单的完全面向对象的语言,具有健壮性和安全性等特点,可以开发Application、Applet和Web应用程序。JDK是开发Java程序的必备工具。Java程序是解释执行的更多信息列出可扩展内容列出参考资源(附件、书籍、文章、网址等)。请求学员反馈、回答问题。作业问题讲解二 面向对象的概念第章目标目标q了解:面向对象的三大基本特点q理解:类和对象的概念q掌握:Java类的定义,类的属性和方法,类的构造方法以及对象的创建与引用概述概述q面向对象编程的三大基本特点是:q封装q继承q多态 q本章主要讲解面向对象编程的重要概念:q建立类的概念q理解程序中对象和现实生活中对象的概念q建立起程序类实例(对象)的概念q使用类实例(对象)调用方法和属性 类的定义及现实世界的模型类的定义及现实世界的模型q面向对象的开发方法是把软件系统看成各个对象的集合q类(class)是将数据及处理数据的方法结合在一起的模型类用于描述对象q对象是归属于某个类的具体实例 类的定义及现实世界的模型类的定义及现实世界的模型q现实世界中类和对象的模型 类对象对象对象类的定义及现实世界的模型类的定义及现实世界的模型q对象可以是现实事物q人、天空、月亮、太阳、桌子q也可以是抽象事物q会议、合约q对象必须能够体现自身的一部分特性 牌照号码制造商年份启动加速停车 汽车会议内容开会地点开会时间结束时间与会人员会议学号年级名字通信地址上学参加活动下课 学生类的定义及现实世界的模型类的定义及现实世界的模型q对象的属性和行为q属性体现了对象的某种特征q行为即对象所能进行的操作汽车牌照号码制造商年份车速启动加速减速停车属性行为类的定义及现实世界的模型类的定义及现实世界的模型q对象具有封装性封装(encapsulation)是对象最重要的特性如何完成各项操作的过程被对象隐藏起来了类的定义及现实世界的模型类的定义及现实世界的模型q对象都属于某个类q每个对象都是某个类的实例 q同一个类所有实例具有相同的属性和行为,但属性值各不相同学生类学号姓名年龄上课下课对象1学号:1001姓名:李明年龄:18上课下课对象2学号:1002姓名:王永年龄:19上课下课对象3学号:1003姓名:周佳年级:2上课下课错误:错误:学生类中未定学生类中未定义年级属性义年级属性类(类(class)是描述了一组具有相同属性和行为的对象)是描述了一组具有相同属性和行为的对象 类的定义及现实世界的模型类的定义及现实世界的模型q类图(class diagram)是说明类的常用方法q类图是统一建模语言UML(Unified Modeling Language)的一部分,也是对类进行说明的标准表示法 Car+regNo+make+year+speed+start()+speedUp()+slowDown()+stop()类名类名属性属性方法方法类的属性与方法类的属性与方法q类也是一种数据类型q每个类都描述了一组特定的数据q类这种数据类型统称为引用类型 public class Car public class Car/汽车类汽车类 /成员变量成员变量(属性属性)String regNo;String regNo;/牌照号码牌照号码 String make;String make;/制造商制造商 int year;int year;/年份年份 int speed;int speed;/车速车速 /构造方法构造方法(函数函数)public Car()/无参构造方法无参构造方法 public Car(String regNo,String make,int year,int initSpeed)/带有参数的构造方法带有参数的构造方法/Car类的操作类的操作(方法方法)void start()/启动启动 void speedUp(int increase)/加速加速 void slowDown(int increase)/减速减速 void stop()/停车停车 对象的实例化对象的实例化q构造方法是用来构造类实例(对象)的方法 q使用关键字new来调用构造方法,从而创建一个类的实例/调用无参数构造方法创建一个类的实例Car car=new Car();/调用带四个参数的构造方法创建一个类的实例Car theCar=new Car(VD-12345,volvo,1998,0);对象的实例化对象的实例化q通过类的实例(对象)调用方法以实现对象的操作/调用无参数方法theCarOfGreta.start();/调用带参数的方法theCarOfGreta.speedUp(10);对象的实例化对象的实例化q对象变量存放的是引用q引用就是一个所指向的对象的地址q可以通过赋值改变该引用 Car theCarOfGreta=new Car(“VD-12345”,“volvo”,1998,0);Car theCarOfAnne=new Car(“VD-12346”,“Benz”,1998,0);theCarOfGreta=theCarOfAnne;设计类设计类q类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素。它封装了同一类对象的属性和方法,是这一类对象的原型 q设计类是面向对象的核心设计类设计类q一个有关装修房子的问题。在该问题中涉及以下几种对象:地板,墙,油漆,墙纸,地板材料等 q需要了解的信息有:地板和墙的长,宽q需要计算的数据有:地板和墙的面积(用于决定需要多少墙纸,油漆和地板材料)设计类设计类q墙和地板具有相同的属性(长和宽),可以将这些抽象成一个类Surface类 Surface-name-length-width+getName()+getLength()+getWidth()+getArea()Surface类的类图类的类图私有属性私有属性(实例变量实例变量)类名类名公有方法公有方法(实例方法实例方法)编写实现类编写实现类q根据类图,Surface类实现如下:class Surface private String name;private double length;private double width;public Surface(String initName,double initLength,double initWidth)name=initName;length=initLength;width=initWidth;public String getName()return name;public double getLength()return length;public double getWidth()return width;public double getArea()return width*length;编写实现类编写实现类q使用Surface类 class FloorCalculations public static void main(String args)/*步骤1:创建Surface类的一个对象*/Surface aFloor=new Surface(Marys floor,4.8,2.3);/*步骤2:提取对象的数据,并计算对象的面积*/String name=aFloor.getName();double width=aFloor.getWidth();double length=aFloor.getLength();double area=aFloor.getArea();/*步骤3:将获得的结果显示在屏幕上*/System.out.println(Information about the floor with the name:+name);System.out.println(Width:+width);System.out.println(Length:+length);System.out.println(Area:+area);访问修饰符访问修饰符privateprivate和和publicpublicqpublic表示对象外的程序能够访问该方法或属性qprivate关键字表示对象外的程序不能访问该方法或属性 q实例变量使用private修饰符,而在方法上使用public修饰符,让类外的程序只有通过方法才能访问实例变量,这样可以提高数据的安全性。构造方法构造方法q构造方法主要用来初始化类中的成员变量q方法名必须与类名相同q构造方法没有返回值类型 public Surface(String initName,double initLength,double initWidth)name=initName;length=initLength;width=initWidth;构造方法构造方法q在创建一个类对象时,new运算符调用该类的构造方法以执行初始化工作 Surface aFloor=new Surface(Marys floor,4.8,2.3);aFloorname:Maryfloorlength:4.8width:2.3对象:aFloor构造方法构造方法q在Java中要求每个类至少有一个构造方法q如果没有为类声明构造方法,则编译器会创建一个没有参数的默认构造方法/默认构造方法public Surface()注意:当我们为类声明了任何一个构造方法,则Java将不会为该类创建默认的构造方法 垃圾回收垃圾回收q在一些传统的编程语言(如C语言)中,回收内存的任务是由程序本身负责的 q程序员可能因为粗心大意,忘记及时释放无用变量的内存,从而影响程序的健壮性q程序员有可能错误地释放核心类库所占用的内存,导致系统崩溃 垃圾回收垃圾回收q在Java语言中,内存回收的任务由Java虚拟机来担当 q在程序的运行时环境中,Java虚拟机提供了一个系统级的垃圾回收器线程,它负责自动回收那些无用对象所占用的内存,这种内存回收的过程被称为垃圾回收(Garbage Collection)总结总结q类是对象的原型,对象是类的具体实例q设计类是面向对象程序设计的核心q类的成员主要有:属性,方法,构造方法q使用new关键字创建类的对象,在创建对象时将调用构造方法 q对象变量存放的是引用,引用实际上是实例对象在内存中的地址 q垃圾回收线程用于回收内存中不再使用的对象 三数据类型第章目标目标q理解数据类型转换q掌握基本数据类型、操作符q掌握引用数据类型:字符串,数组概述概述qJava语言是一种严格的“类型化”语言,这意味着每个变量都必须有一个声明好的类型qJava的数据类型包括:q基本数据类型q引用数据类型 基本数据类型基本数据类型qJava语言提供了八种基本类型q4种整数类型q2种浮点数类型q字符类型q布尔类型基本数据类型基本数据类型q整数类型 int 4字节 short 2字节 long8字节 byte1字节(-128127)int i;long l=3L;byte b=65;基本数据类型基本数据类型q浮点数类型 float 4字节 double 8字节float f=12.3f;double d;d=3.1415;基本数据类型基本数据类型q字符类型 char 2字节 char ch1=A;char ch2=中;Java中的字符采用unicode编码方案,一个字符占2个字节。所以一个char类型的变量可以容纳一个中文字符基本数据类型基本数据类型q布尔类型 boolean 取值:true 或 false boolean bool=true;引用数据类型引用数据类型q引用类型可以分为q类引用类型q接口引用类型q数组引用类型 Surface aWall;/类引用类型java.lang.Runnable myThread;/接口引用类型int intArray;/数组引用类型引用数据类型引用数据类型q不管何种引用类型的变量,引用的都是对象Surface aWall=new Surface(Mary,3,5);q如果引用类型变量不引用任何对象,就给其赋值nullSurface aWall=null;引用数据类型引用数据类型q一个对象可以被多个引用变量所引用 Surface aWall=new Surface(Mary,3,5);Surface westWall=aWall;JavaJava操作符操作符q根据操作对象的个数,操作符可分为 q一元操作符q二元操作符q三元操作符q根据操作符的功能可分为q一元操作符:!、+、-、-、q算术操作符:+、-、*、/、%q逻辑操作符:&、|、&、|、q关系操作符:、=、=60?及格:不及格;int score=61;String result=null;if(score=60)result=及格;else result=不及格;等价于:JavaJava操作符操作符q字符串连接操作符“+”String str1=How;String str2=are;String str3=you.;String str4=str1+str2+str3;JavaJava操作符操作符q比较操作符“=”q操作数可以是基本类型,也可以是引用类型int a1=1,a2=2;boolean b1=a1=a2;String str1=Hello,str2=word;boolean b2=str1=str2;q当操作符“=”两边都是引用类型变量时,这两个引用变量必须都引用同一个对象,结果才为true JavaJava操作符操作符q对象的equals()方法 用于比较两个引用变量所引用的对象的属性值是否相同。Integer int1=new Integer(1);Integer int2=new Integer(1);String str1=new String(123);String str2=new String(123);System.out.println(int1=int2);System.out.println(int1.equals(int2);System.out.println(str1=str2);System.out.println(str1.equals(int2);JavaJava操作符操作符qinstanceof 操作符:用于判断一个引用类型变量所引用的对象是否是某个类的实例 Dog dog=new Dog();boolean bool=dog instanceof XXX;JavaJava数据类型转换数据类型转换q自动类型转换 取值范围小的数据类型到取值范围大的数据类型可以自动转换double sum =5674.33;int number =14;double average =sum/number;char symbol=5;int digit=symbol;JavaJava数据类型转换数据类型转换q强制类型转换 取值范围大的数据类型到取值范围小的数据类型必须强制转换 int theNumberOfKids=5;int theNumberOfApples=23;double applesPerKid=(double)theNumberOfApples/double)theNumberOfKids;int a=(int)1.7;int b=(int)(1.6+1.7);int c=(int)1.6+(int)1.7;JavaJava数据类型转换数据类型转换q基本数据类型封装类基本类型封装类intIntegershortShortlongLongbyteBytefloatFloatdoubleDoublecharCharacterbooleanBoolean Java Java数据类型转换数据类型转换q封装类的使用Double num1=new Double(12.5);Integer num2=new Integer(5);double result=num1.doubleValue()/num2.intValue();Integer intObj1=new Integer(50);Integer intObj2=new Integer(50);boolean bool=intObj1.equals(intObj2);Boolean boolObj=new Boolean(bool);JavaJava数据类型转换数据类型转换q 常用类型转换方法 字符串转换成基本类型数据(封装类的方法)int myInt=1234;String myString=+myInt;String myNumber=1234;int myInt=Integer.parseInt(myNumber);q基本类型数据转换成字符串JavaJava数组数组qJava中的数组是引用类型q数组分为:q基本数据类型数组q引用数据类型数组q数组元素必须是相同的数据类型基本数据类型数组基本数据类型数组q定义数组的语法规则方法一:dataType namename=new dataTypelength;例如:int degr;degr=new int7;for(int i=0;idegr.length;i+)degri=15+i;数组是一个对象,其中定义有一个叫length的公有常量,表示该数组的长度基本数据类型数组基本数据类型数组q定义数组的语法规则方法二:dataType name=new dataTypelength;例如:int degr=new int7;基本数据类型数组基本数据类型数组q定义数组的语法规则方法三:dataType name=value0,value1,value2,value3,例如:int degr=15,16,17,18,19,20,21;基本数据类型数组基本数据类型数组q数组复制复制数组的引用:int array1=1,2,3,4,5;int array2=6,7,8,9,0;array2=array1;复制数组的数据:int array1=1,2,3,4,5;int array2=6,7,8,9,0;for(int i=0;i 0)System.out.println(“大于0”);if (x=0)System.out.println(“等于0”);if (x b)a+;b-;System.out.println(“a=”+a+”b=”+b);int a=1,b=1;if(a b)a+;b-;System.out.println(“a=”+a+”b=”+b);ifelseifelseq特殊的串联编程语法结构(多路分支)/语法if(expression1)Statement1 else if(expression2)Statement2 else if(expressionM)StatementM else StatementN/示例if (x 0)System.out.println(“大于0”);else if (x=0)System.out.println(“等于0”);else if(x=100000=3000,=2000,3000600=10000)System.out.println(不给予生活补助);else if (sal=3000)System.out.println(给予500元生活补助);else if (sal=2000)System.out.println(给予600元生活补助);else System.out.println(给予800元生活补助);ifelseifelseq 有一个计算器类可以进行四则运算(加、减、乘、除)。编写一个程序来实现可以让用户随意选择一种四则运算。程序演示程序演示switchswitch分支语句分支语句qswitch语句是多路分支语句switch(expression)case value1:statements;break;case value2:statements;break;case valueN:statements;break;default:statements;break;switchswitch分支语句分支语句q根据考试成绩的等级打印出相应的百分制分数段。等级分数段A85 100B70 84C60 69D60switchswitch分支语句分支语句示例代码 switch(grade)case A:System.out.println(grade+is 85100);break;case B:System.out.println(grade+is 7084);break;case C:System.out.println(grade+is 6069);case D:System.out.println(grade+is 60);break;default:System.out.println(Invalid Grade!);break;switchswitch分支语句分支语句q使用switch语句时的规则q在switch(expression)语句中表达式的类型必须是与int类型相兼容的基本类型:byte,char,short,int q其他规则与C语言中的switch语句相同循环语句循环语句q循环语句的作用是反复执行一段代码,直到不满足循环条件为止 q循环语句应该包括如下4部分内容:q初始化部分q循环条件q循环体q迭代部分qJava语言提供3种循环语句:qforqwhileqdowhile循环语句循环语句whilewhile循环循环qwhile循环先判断循环条件,再执行循环体 初始化部分 while(循环条件)循环体,包括迭代部分 初始化部分循环条件循环体中止循环truefalsewhile语句的循环流程 whilewhile循环循环q例:max(int array)方法能返回整数数组中的最大值 public int max(int array)int i=1,loc=0;/初始化部分 while(i array.length)/循环条件,i为循环控制变量 /以下是循环体 if(arrayloc arraryi)loc=i;i+;/迭代部分 return arrayloc;dodo.while.while.循环循环 qdowhile语句首先执行循环体,然后再判断循环条件 初始化部分 do 循环体,包括迭代部分 while(循环条件);初始化部分循环条件循环体中止循环falsetruedo.while.do.while.循环循环例:使用dowhile循环找出整数数组中的最大值 public int max(int array)int i=1,loc=0;/初始化部分 do /以下是循环体 if(arrayloc arraryi)loc=i;i+;/迭代部分 while(i array.length);/循环条件 return arrayloc;forfor循环循环 qfor语句与while语句一样,先判断循环条件,再执行循环体 for(初始化部分;循环条件;迭代部分)循环体 forfor循环循环 例:使用for循环找出整数数组中的最大值 public int max(int array)int loc=0;for(int i=1;iarray.length;i+)if(arrayloc 0;i-)for(int j=1;j20)result+=a+;if(a=10)continue;/一旦流程执行到某个return语句,则立即退出本方法 public int amethod(int x)if(x 0)return 88;if(x=0)return 99;return-1;总结总结qJava中的流程控制与C语言基本相同q分支结构:ifelse、switchcaseq循环结构:while、dowhile、forq跳转语句:break、continue、return五重载和构造方法第章目标目标q理解方法重载的意义q掌握成员方法的重载,构造方法的重载q掌握this,static 关键字的作用概述概述q多态性是面向对象程序设计的重要特性之一。多态性分为两种:静态多态和动态多态。方法重载用于实现静态多态性q本章主要讲解方法重载及其调用、构造方法的重载及其调用等。然后讲解Java编程中经常使用的this和static关键字 方法重载(方法重载(overloadoverload)q对于类的方法,如果有两个方法的方法名相同,但参数不一致,那么可以说,一个方法是另一个方法的重载方法q方法重载规则:q方法名相同q方法的参数类型、个数至少有一项不相同q方法的返回类型可以不相同q方法的修饰符可以不相同 方法重载(方法重载(overloadoverload)q方法重载的原则:q只有对不同的数据完成基本相同的任务的方法才应重载q重载的优点是:q不必对相同的操作使用不同的方法名q有助于更轻松地理解和调试代码q更易于维护代码 参数类型不同的重载参数类型不同的重载qjava.lang.Math类的max()方法的重载模型:public static int max(int a,int b)public static long max(long a,long b)public static float max(float a,float b)public static double max(double a,double b)qmax()重载方法的调用Math.max(1,2);Math.max(1.0F,2.0F);Math.max(1.0,2);方法重载(方法重载(overloadoverload)q类的同一种功能可能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数 q例:杂技师能训练动物,对于不同的动物有不同的训练方式 public void train(Dog dog)/训练小狗站立、排队、做算术 public void train(Monkey monkey)/训练小猴敬礼、翻筋斗、骑自行车 参数类型不同的重载参数类型不同的重载q方法重载的实现:定义一个Account类,其中定义两个重载方法,分别求两个整数和两个浮点数的和class Account public void sum(int a,int b)int result=a+b;System.out.println(result);public void sum(double a,double b)double result=a+b;System.out.println(result);public class AccountTest public static void main(String args)Account acc=new Account();acc.sum(10,15);acc.sum(11.4,20.5);参数个数不同的重载参数个数不同的重载q对于方法调用中参数个数不同的情况也可以进行方法重载 public int sum(int a,int b)public int sum(int a,int b,int c)参数个数不同的重载参数个数不同的重载q方法重载的实现:q修改Account类,其中定义两个重载方法,分别求两个整数和三个整数的和class Account public int sum(int a,int b)int result=a+b;return result;public int sum(int a,int b,int c)int result=sum(a,b);result=sum(result,c);return result;public class AccountTest public static void main(String args)Account acc=new Account();int result=acc.sum(10,15);System.out.println(两个数的和:+result);result=acc.sum(10,15,20);System.out.println(三个数的和:+result);构造方法构造方法q构造方法负责对象的初始化工作,为实例变量赋初始值q构造方法必须满足以下语法规则:q方法名必须与类名相同q不要声明返回类型q当类中没有定义构造方法时将使用默认构造方法 重载构造方法重载构造方法q当通过new语句创建一个对象时,在不同的条件下,对象可能会有不同的初始化行为q假设有一雇员类Employee,包含属性name 和age。当使用new创建一个Employee的对象时可能出现以下几种情况:q姓名和年龄都已知q姓名已知,年龄未知q姓名和年龄都未知 可以通过重载构造方法来表达对象的多种初始化行为可以通过重载构造方法来表达对象的多种初始化行为 重载构造方法重载构造方法Employee类重载构造方法的实现:class Employee class Employee private String name;private String name;private int age;private int age;public Employee(String n,int a)public Employee(String n,int a)name=n;name=n;age=a;age=a;public Employee(String n)public Employee(String n)name=n;name=n;age=-1;age=-1;public Employee()public Employee()name=name=无名氏无名氏;age=-1;age=-1;public class EmployeeTest public class EmployeeTest public static void main(String args)public static void main(String args)Employee zhangfei=new Employee(“Employee zhangfei=new Employee(“张飞张飞”,25);,25);Employee guanyu=new Employee(“Employee guanyu=new Employee(“关羽关羽”););Employee someone=new Employee();Employee someone=new Employee();重载构造方法重载构造方法q一个类可以有多个构造方法q重载的构造方法可以以不同方式初始化类对象q要重载构造方法,我们应提供不同的参数列表(参数个数不同或者参数类型不同)默认构造方法默认构造方法q默认构造方法是没有参数的构造方法,可分为两种:q隐含的默认构造方法q程序显式定义的默认构造方法默认构造方法默认构造方法q如果用户定义的类中没有提供任何的构造方法,那么Java语言将自动提供一个隐含的默认构造方法q/隐含的默认构造方法qpublic Employee()q如果类中显式定义了一个或多个带参数构造方法,那么这个类就失去默认构造方法。此时可以显式定义默认构造方法。thisthis关键字关键字q当局部变量与实例变量同名时,局部变量将隐藏同名的实例变量q可以用关键字this来区分局部变量和实例变量 class Employee private String name;private int age;public Employee(String name,int age)this.name=name;this.age=age;thisthis关键字关键字q在构造方法中使用this关键字调用其他的重载构造方法class Employee private String name;private int