javajava基础语法.ppt

上传人:牧羊曲112 文档编号:6509331 上传时间:2023-11-07 格式:PPT 页数:235 大小:582KB
返回 下载 相关 举报
javajava基础语法.ppt_第1页
第1页 / 共235页
javajava基础语法.ppt_第2页
第2页 / 共235页
javajava基础语法.ppt_第3页
第3页 / 共235页
javajava基础语法.ppt_第4页
第4页 / 共235页
javajava基础语法.ppt_第5页
第5页 / 共235页
点击查看更多>>
资源描述

《javajava基础语法.ppt》由会员分享,可在线阅读,更多相关《javajava基础语法.ppt(235页珍藏版)》请在三一办公上搜索。

1、Java,Java,语言基础面向对象类的应用输入与输出线程及线程应用网络编程,1 语言基础,本章是讲述Java语言的基础语法,要求学生一定掌握。课程内容:1.1Java语言入门1.2 标识符、关键字和数据类型1.3 运算符,表达式和语句1.4 数组1.5 方法的封装,2 面向对象,本章是介绍Java面向对象的概念,讲解面向对象的封装性,多态性和继承性,以及抽象类、嵌套类。课程内容:2.1 面向对象的基本概念2.2 类与封装2.3 static关键字2.4 内部类2.5 类的继承2.6 final关键字2.7 抽象类与接口2.8 类的多态2.9 异常2.10 包,3 类的应用,本章是讲解各种常用

2、类的使用课程内容:3.1String类3.2StringBuffer类3.3Calendar类3.4基本类型对象包装类,4 线程及线程应用,本章是了解线程的概念,掌握线程的控制,可以灵活运用线程课程内容:4.1线程的概念4.2线程的使用4.3线程同步,5 输入与输出,本章是了解程序与文件系统的交互方式,可以直接对文件进行读写控制课程内容:5.1File类5.2字节流5.3字符流5.4编码5.5随机文件,6 网络编程,本章是介绍通过类连接到www,然后讨论如何通过TCP/IP或UDP协议在网络上的两个程序间建立连接并交换数据课程内容:6.1网络概述6.2InetAddress 类6.3UDP网络

3、程序6.4TCP网络程序,7 数据结构,本章是了解Java的数据结构,能够灵活应用在游戏编程中课程内容7.1 链表7.2 堆栈7.3 队列7.4 递归7.5 排序,1 语言基础,1 语言基础,本章是讲述java语言的基础语法,要求学生一定掌握。课程内容:1.1 Java语言入门1.2 标识符、关键字和数据类型1.3 运算符,表达式和语句1.4 数组1.5 方法的封装,1.1 Java语言入门,1.1.1 Java特点1.1.2 Java语言编程过程1.1.3 Java的开发环境1.1.4 Java程序开发基本过程1.1.5 Java虚拟机的运行过程,1.1.1 Java特点,简单面向对象 与平

4、台无关健壮性(Java的强类型机制、异常处理、内存的自动收集等),1.1.2 Java语言编程过程,Java源程序(*.java),Java字码文件(*.class),Java编译程序,Java虚拟机(JVM),执行,Window下的字节码解释程序,Linux下的字节码解释程序,Window操作系统,Linux操作系统,1.1.3 Java的开发环境,Java开发环境的搭建(1)什么是JDK(2)设置环境变量,1.1.3 Java的开发环境,什么是JDKsun公司将java的开发工具和运行环境所涉及到的应用程序和相关文件放在一起,称之为JDK(java development kit)JDK版

5、本(1)J2EE(Java 2 Platform Enterprise Edition)(2)J2SE(Java 2 Platform Standard Edition)(3)J2ME(Java 2 Platform Micro Edition)下载地址:,1.1.3 Java的开发环境,JDK的安装目录JDK的目录结构(1)bin目录javacjava(2)demo目录,1.1.3 Java的开发环境,何为环境变量:在操作系统中定义,可以被操作系统上运行的的应用程序访问的变量查看环境变量:在命令行窗口中直接键入set查看所有的环境变量:键入set+变量名查看该变量的值我的电脑属性高级环境变量

6、:关于用户变量和系统变量中都进行设置的变量,1.1.3 Java的开发环境,设置环境变量在命令行窗口中键入set 变量名=变量值 设置环境变量(不能键入空格),键入set 变量名=,取消环境变量(注:在命令行窗口中设置的环境变量只对该命令行窗口起作用)在我的电脑属性高级环境变量(注:在这里设置的环境变量对以后启动的所有应用程序和命令行窗口都起作用,但不会影响已启动的应用程序和命令行窗口,在用户窗口中设置的环境变量需要注销重新登陆后才起作用),1.1.3Java的开发环境,环境变量path当我们执行某个命令时,操作系统首先会在当前目录下查找该命令,如果没有找到这个命令程序,操作系统则会沿着pat

7、h中所指定的目录依次查找,以最先找到的为准查看当前使用的JDK版本:java version,1.1.4 Java程序开发基本过程,Java编程基础编译Java程序运行Java程序Java注释使用Java文档,1.1.4 Java程序开发基本过程,Java编程基础Java的基本语法格式:所有的java程序都应该写在类中 class 类的修饰符:public和默认修饰符,1.1.4 Java程序开发基本过程,编译Java程序Javac运行Java程序Java,1.1.4 Java程序开发基本过程,Java注释单行注释/多行注释/*/文档注释/*/,1.1.5 Java虚拟机的运行过程:,加载代码

8、:类装载器(classloader)校验代码:字节码验证器(Byte Code Verifier)执行代码:解释器(Interpreter),1.2 标识符、关键字和数据类型,1.2.1 标识符1.2.2 关键字1.2.3 数据类型1.2.4 常量1.2.5 变量1.2.6 类型转换,1.2.1 标识符,标识符命名规则定义:Java对各种变量,方法和类等要素命名时使用的字符序列称为标识符规则:标识符应以字母,下划线,美元符号开头标识符应以字母,下划线,美元符号或数字组成标识符对大小写敏感,长度无限止合法的标识符:Indentifier、username、user_name、_userName、

9、$username非法的标识符:class、98.3、Hello World,1.2.2 关键字,注:java 无sizeof,goto,const 关键字,但不能用goto const作为变量名,1.2.3 数据类型,数据类型,基本数据类型,引用数据类型,类,接口,数组,数值型,字符型(char),布尔型(boolean),整数型(byte shortInt long),浮点型(float,double),1.2.4 常量,常量:就是持续不变的值常量类型:整型常量:十进制(12),十六进制(0 x12),八进制(012)长整型常量:13L浮点数常量:(1)单精度浮点数 5.1f,.4f,2e

10、3f,0f(2)双精度浮点数 5.1,.4,2e-3,0d布尔常量:true和false,1.2.4 常量,字符常量:a,8,u0027 r表示接受键盘输入,相当于按下了回车键;n是换行;t是制表符,相当于table键;b是退格键,相当于Back Space;是单引号,而“是双引号;是一个斜杠“”。字符串常量:“Hello World“,”123”,Welcome nXXX“null常量:null常量只有一个值,用null表示,表示对象的引用为空,1.2.5 变量,变量概念变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。先声明,再使用变量的元素 变量名,变量值,变量的作用范围变量

11、定义int x=0,y;y=x+3;x和y就是变量,1.2.5 变量,变量字节大小及有效取值范围byte占用一个字节,数字大小为-2727-1short占用两个字节,数字大小为-215215-1 int占用四个字节,数字大小为-231231-1 long占用八个字节,数字大小为-263263-1 float占用四个字节,数字大小为1.4E-453.4E+38,-1.4E-45-3.4E+38。用二进制的指数形式表示一个浮点数的格式,如:101*22,101*2-3double占用八个字节,数字大小为4.9E-3241.7E+308,-4.9E-324-1.7E+308。char占两个字节,数字

12、大小为0216-1,是unicode编码。字符的本来面目,我们为什么可以直接将一个数字赋给字符变量。Boolean占一个字节,有两种取值,true和false。,1.2.5 变量,变量作用域变量要先定义,后使用,但不是在变量定义后的语句中一直都能使用前面定义的变量。比如:可以用大括号将多个语句包起来形成一个复合语句,则复合语句中定义的变量只能在定义它的复合语句中使用。局部变量在方法或方法中的代码块中定义的变量称为局部变量成员变量在方法外,在类内部定义的变量,1.2.5 变量,局部变量的定义在方法或方法中的代码块中定义的变量称为局部变量,局部变量在方法或代码块被执行时创建,在方法或代码块结束时被

13、销毁。局部变量的初始化局部变量在进行取值操作前必须被初始化,否则会出现编译错误,1.2.6 类型转换,自动类型转换(也叫隐式类型转换)byte b=3;int x=b;/b被自动转换为int型强制类型转换(也叫显式类型转换)byte a;int b;a=(byte)b;/b被强制转换为byte型,1.3 运算符,表达式和语句,1.3.1 运算符1.3.2 表达式1.3.3 控制语句,1.3.1 运算符,何为运算符运算符是一种特殊符号,用以表示数据的运算、赋值和比较,一般由一至三个字符组成。运算符类型算术运算符赋值运算符比较运算符逻辑运算符位运算符移位运算符,1.3.1 运算符,1.3.1 运算

14、符,算术运算符的注意问题“+”除字符串相加功能外,还能把非字符串转换成字符串,如:“x”+123;的结果是“x123”。如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论了。对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。int x=3510;x=x/1000*1000;实际运行结果是3000,想想为什么?,1.3.1 运算符,赋值运算符,1.3.1 运算符,赋值运算符注意:注1:在JAVA里可以把赋值语句连在一起,如:x=y=z=5;在这个语句中,所有三个变量都得到同样的值5。注2:x+=3等效于x=x+3,等于*

15、=,-=,/=依此类推。,1.3.1 运算符,比较运算符,1.3.1 运算符,比较运算符注意:注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。注2:比较运算符“=”不能误写成“=”,1.3.1 运算符,逻辑运算符,1.3.1 运算符,逻辑运算符注意点注1:逻辑运算符用于对boolean型结果的表达式进行运算,运算的结果都是boolean型。注2:“&”和“&”的区别在于,如果使用前者连接,那么无论任何情况,“&”两边的表达式都会参与计算。如果使用后者连接,当“&”的左边为false,则将不会计算其右边的表达式。“|”和“|”的区别与“&”和“&”的区别一样。

16、,1.3.1 运算符,位运算符任何信息在计算机中都是以二进制的形式保存的,&,|,除了可以作为逻辑运算符,也可以做为位算符,它们对两个操作数中的每一个二进制位都进行运算。只有参加运算的两位都为1,&运算的结果才为1,否则就为0。只有参加运算的两位都为0,|运算的结果才为0,否则就为1。只有参加运算的两位不同,运算的结果才为1,否则就为0。,1.3.1 运算符,移位运算符 右移 无符号右移,1.3.1 运算符,移位运算的注意事项及小技巧移位运算符适用类型有byte、short、char、int、long对低于int型的操作数将先自动转换为int型再移位。对于int型整数移位ab,系统先将b对32

17、取模,得到的结果才是真正移位的位数。例如:a33和a1结果是一样的,a32的结果还是a原来的数字。对于long型整数移位时ab,则是先将移位位数b对64取模。移位不会改变变量本身的值。如a1;在一行语句中单独存在,毫无意义。x1的结果和x/2的结果是一样的,x2和x*4的结果也是一样的。总之,一个数左移n位,就是等于这个数乘以2的n次方,一个数右移n位,就是等于这个数除以2的n次方。请思考:如何用程序实现求2的x次方。答案:y=1 x;,1.3.1 运算符,高 低,运算符的优先级,1.3.1 运算符,编程技巧运算符的优先级顺序不用刻意去记,使用括号控制优先级不但能降低编程的难度,而且能增加程序

18、的可读性,1.3.2 表达式,表达式语句:符合一定语法规则的操作数和运算符的序列例:b;b+5;a10&b10表达式的运算顺序先按照运算符的优先级优先级相同的,按照约定的结合方向表达值的值和类型,1.3.3控制语句,条件控制语句循环控制语句特殊的循环流程控制,1.3.3控制语句,条件控制语句If else 语句的语法:If(布尔表达式)语句或语句块If(布尔表达式)语句或语句块else if(布尔表达式)语句或语句块else语句或语句块,1.3.3控制语句,switch语句的语法switch(表达式1)case 常量1:语句break;case 常量2:语句break;default:语句br

19、eak;,1.3.3控制语句,switch选择语句:switch(x)/x只能为int、byte、char、shortcase 1:System.out.println(“Monday”);break;case 2:System.out.println(“Tuesday”);break;case 3:System.out.println(“Wednesday”);break;default:System.out.println(“I dont know”);思考:无break的情况,1.3.3控制语句,for循环语句for(初始化表达式;布尔值测试表达式;更改表达式)语句或语句块;例:for(

20、int i=0;i=10;i+)System.out.println(“i=”+i);,1.3.3控制语句,while循环while(布尔值)语句或语句块;注意:while表达式的括号后不能加“;”,否则会 造成不易察觉的无限循环,1.3.3控制语句,do while循环do语句或语句块;while(布尔测试)注意:while表达式的括号后要加“;”,1.3.3控制语句,思考:while循环和do while循环的不同之处while循环先判断循环条件,再执行循环体do while循环先执行循环体,再判断循环条件,1.3.3控制语句,break与continue语句break:终止循环体中的执行

21、语句和switch语句,跳转到当前循环的下一条语句continue:只能用于while、do while、for语句中,终止当前这次循环,执行下一次循环,1.3.3控制语句,特殊的循环流程控制break语句do语句;If(条件为真)break;语句while(布尔表达式);,1.3.3控制语句,特殊的循环流程控制continue语句do语句;If(条件为真)continue;语句while(布尔表达式);,1.4数组,1.4.1 声明数组1.4.2 创建数组1.4.3 数组初始化1.4.4 数组中注意的问题1.4.5 多维数组,1.4.1声明数组,声明数组:数组类型 数组名Int aaInt

22、aa,1.4.2创建数组,创建数组:数组名=new 类型名数组大小aa=new int10;数组元素:aa0、aa1、aa2aa9,1.4.3数组初始化,int ia=1,2,3,4;int ia=new int3,4,5;int a5;/声明数组时,不能指定其长度,编译时将出错,1.4.4数组中注意的问题,空指针异常(数组未初始化就使用数组中的元素)数组越界异常 如何得到数组长度 所有的数组的索引均从0开始,1.4.4数组中注意的问题,不能改变数组大小可以使用相同的引用变量去引用另一个全新的数组,1.4.5多维数组,多维数组,类似棋盘。Java 中的多维数组,也就是数组的数组,,1.4.5多

23、维数组,定义多维数组int xx;xx=new int3;xx0=new int3;xx1=new int2;,1.4.5多维数组,多维数组中元素的引用方式,如:x12。规则矩阵数组可以在一条语句中产生,如:int xx=new int23;多维数组的静态初始化,如:int xx=3,2,7,1,5,6;,1.5方法的封装(功能的封装),1.5.1 方法的封装格式1.5.2 方法调用的过程分析1.5.3 方法的调用1.5.4 方法的参数传递,1.5.1方法的封装格式,返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,.)程序代码 return 返回值;形式参数:在方法被调用时用于

24、接收外部传入的数据的变量。参数类型:就是该形式参数的数据类型。返回值:方法在执行完毕后返还给调用它的程序的数据。返回值类型:函数要返回的结果的数据类型。实参:调用函数时实际传给函数形式参数的数据。如何理解函数返回值类型为void的情况,1.5.2方法调用的过程分析,1.5.3方法的调用,方法调用的几种不通情况使用return提前返回,1.5.4方法的参数传递,基本数据类型的参数传递class PassValuepublic static void main(String args)int x=5;change(x);System.out.println(x);public static voi

25、d change(int x)x=3;,1.5.4方法的参数传递,方法的形式参数相当于方法中定义的局部变量方法的形式参数在方法调用结束时被释放,不会影响到主程序中同名的局部变量,1.5.4方法的参数传递,class PassRefint x;public static void main(String args)PassRef obj=new PassRef();obj.x=5;change(obj);System.out.println(obj.x);public static void change(PassRef obj)obj.x=3;,小结,1.1 Java语言入门1.2 标识符、关

26、键字和数据类型1.3 运算符,表达式和语句1.4 数组1.5 方法的封装,2 面向对象,2 面向对象,本章是介绍Java面向对象的概念,讲解面向对象的封装性,多态性和继承性,以及抽象类、嵌套类。课程内容:2.1面向对象的基本概念2.2类与封装2.3static关键字2.4内部类2.5类的继承2.6final关键字2.7抽象类与接口2.8异常2.9包,2.1面向对象的基本概念,2.1.1 面向对象2.1.2 对象2.1.3 类2.1.4 面向对象的定义2.1.4 OOP词汇表,2.1.1面向对象,面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的

27、主流面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。,2.1.2对象,(1)对象。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。(2)对象的状态和行为。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中,2.1.3类,类:具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类

28、,类的具体化就是对象,也可以说类的实例是对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。,2.1.3类,类的结构。在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般-具体结构关系,整体-部分结构关系。一般具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。整体部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。,2.2类与封装,2.2.1 类与对象2.2.2 对象的创建、使用,比较2.2.3 匿名对象2.2.4 类设计2.2.5 实现

29、类的封装性2.2.6 构造方法2.2.7 This引用2.2.8 方法的重载,2.2.1类与对象,类:类就是对某一事务的描述,是抽象的、概念上的定义,如:汽车设计图对象:对象是实际存在的该类事务的个体,也称为实例(instance),如:按汽车设计图设计出来的每一辆汽车,2.2.1类与对象,类可以将数据和方法封装在一起,数据表示类的属性,方法表示类的行为Class 类名成员属性(成员变量)成员方法,2.2.1类与对象,关于成员变量和局部变量同名的问题class Personint age;void shout()int age=60;System.out.println(“my age is”

30、+age);,2.2.2对象的创建、使用,比较,对象的创建:类名 对象名=new 类名();例:Person p=new Person();变量p是person对象的一个应用,在栈内存中通过new关键字创建的person对象在堆内存中,2.2.2对象的创、使用,比较,对象的使用:对象.属性对象.方法()例:class TestPersonpublic static void main(String args)Person p1=new Person();Person p2=new Person();p1.age=18;p1.shout();p2.shout();,2.2.2对象的创建与使用,对

31、象只能在其有效的生命周期内被使用:当离开对象所在的代码块后,对象就会变成垃圾设置对象的引用为null,对象也会变成垃圾,2.2.2对象的创建、使用,比较,对象的比较有两种方式比较对象,即和equals()方法用于比较引用是否指向同一个对象equals()用于比较两个对象的内容是否一致,2.2.3匿名对象,未指定应用的对象即匿名对象Person p=new Person();p.shout();new Person().shout();用匿名对象改写刚才的程序,2.2.3匿名对象,使用匿名对象的两种情况如果一个对象只需要进行一次方法调用,那么可以使用匿名对象将匿名对象作为一个参数传递给一个方法,

32、如:public void getPerson(Person p);getPerson(new Person();,2.2.4类设计,识别类的一个简单经验就是寻找问题分析中的名词比如:在订单处理系统中有这样一些名词:订单(order)、送货地址(address)、货款(payment)、帐户(account)根据这些名词,我们就可以创建order、address、payment、account等类,2.2.4类设计,确定类中的方法(函数)通过寻找和名词相关的动词来确定方法比如:物品被添加进订单,订单被运送或取消货款被支付,2.2.5实现类的封装性,封装的定义封装的目的,2.2.5实现类的封装性

33、,封装的定义将类的成员变量声明为private,再提供一个或多个public方法实现对该成员变量的修改或访问,这种方式称为封装,2.2.5实现类的封装性,封装的目的隐藏类的实现细节通过定制好的方法访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作(如对数据进行检查)便于修改,增强代码的可维护性,2.2.6构造方法,构造方法(构造函数、构造器)的定义构造方法特征构造方法为什么类同名构造方法的细节,2.2.6构造方法,构造方法的定义:是类的一种特殊方法,java中每个类都有构造方法,它的功能是类的实例初始化状态,2.2.6构造方法,构造方法的特征它具有和类相同的名称它不包含返回值它不能在方法

34、中用return语句返回一个值,2.2.6构造方法,构造方法为什么和类同名?因为构造方法有java编译器负责调用,编译器必须知道哪个是构造方法,采用与类同名的方式是最简单合理的,Person p3=new Person(“Tom”,18);都干了什么,1.定义一个Person类型的引用变量p3和一个Person类的实例对象2.调用构造方法,在构造方法内的代码执行前,先对成员变量进行显式初始化,即执行 private String name=unknown;private int age=-1;3.执行构造方法中的代码4.把新创建的Person对象赋给p3引用变量,2.2.6构造方法,构造方法的

35、几个细节每个java类中至少有一个构造方法关于默认构造方法private修饰的构造方法,2.2.7This引用,this在类内部表示被构造的类对象本身使用this引用的几种情况,2.2.8方法的重载(overload),何为方法重载构造器重载成员方法重载,2.2.8方法的重载(overload),方法的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可。1)方法名相同2)参数必须不同3)返回类型可以相同,可以不相同,2.2.8方法的重载(overload),构造方法的重载成员方法的重载,2.3 static关键字,2.3.1 静态属性2.3.2 静态方法2.3

36、.3 static方法的注意点2.3.4 静态代码块2.3.5 单态设计模式2.3.6 理解main方法的语法,2.3.1静态属性,静态成员变量static String country=“China”;静态成员变量也称作类成员静态成员变量的两种访问方式 类名.成员对象名.成员,2.3.1静态属性,不能把方法体内的变量声明为staticfun()static int I=0;上诉声明是错误的,2.3.1静态属性,static变量在类被载入时就存在,被所有的对象实例共享统计产生了多少类的实例对象:class Aprivate static int count=0;public A()count=

37、count+1;,2.3.2静态方法,静态成员方法也称作类方法使用类名就可以直接调用static方法,不必创建类的实例对象,2.3.3static方法的注意点,static方法中只能调用同类中的其他static成员(变量或方法),不能访问类中的非静态成员static成员不能以任何方式引用this和super关键字main方法是static的,2.3.4静态代码块,类中可以使用不包含在任何方法体中的静态代码块,当类被载入时,静态代码块自动被执行,且只执行一次,静态代码块常用来进行类属性的初始化,2.3.4静态代码块,class StaticCodestatic String coutry;cou

38、try=China;System.out.println(staiccode is loading);,2.3.5单态设计模式,单态设计模式:采取一定的方式保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法,2.3.5单态设计模式,public class TestSingleprivate static final TestSingle onlyOne=new TestSingle();public static TestSingle getTestSingle()return onlyOne;private TestSingle();,2.3.6理解

39、main方法的语法,由于Java虚拟机需要调用类的main方法,所以是public的Java虚拟机在执行main方法是不必创建对象,所以该方法是static的Main方法有一个String类型的数组参数,用来保存执行Java命令时传递给所运行的类的参数,2.3.6理解main方法的语法,public class TestMainpublic static void main(String args)for(int i=0;iargs.length;i+)System.out.println(argsi);使用java TestMain 1 2 3“11 22”运行,2.4内部类,2.4.1 内

40、部类的定义2.4.2 内部类2.4.3 内部类的注意点2.4.4 关于static内部类2.4.5 内部类中的变量名2.4.6 内部类如何被外部类引用2.4.7 方法中的内部类,2.4.1 内部类的定义,在一个类内部定义的类就是嵌套类,也叫内部类或内置类内部类可以访问嵌套他的类的成员,包括private的成员,但内部类的成员却不能被嵌套它的类直接访问,2.4.1 内部类的定义,内部类的定义和普通类没什么区别内部类可以被声明为private或protected的,2.4.2 内部类,class Outerint outer_i=100;void test()Inner in=new Inner(

41、);in.display();class Inner/int outer_i=90;void display()System.out.println(display:outer_i+outer_i);,2.4.2 内部类,class InnerClassDemopublic static void main(String args)Outer outer=new Outer();outer.test();,2.4.2 内部类,class Outerint outer_i=100;void test()Inner in=new Inner();in.display();class Innerin

42、t y=10;void display()System.out.println(display:outer_i+outer_i);,2.4.2 内部类,void showy()System.out.println(y);,2.4.3内部类的注意点,内部类可以访问它的外部类的成员,但内部类的成员只有在内部类的范围之内可知,不能被外部类使用,2.4.4 关于static内部类,如果用static修饰一个内部类,这个类就相当于一个外部定义的类static内部类中可声明static成员,非static内部类中不能声明static成员static内部类不能使用外部类的非static成员变量,2.4.4

43、关于static内部类,class Outerint outer_i=100;void test()Inner in=new Inner();in.display();static class Innervoid display()System.out.println(display:outer_i+outer_i);,2.4.5 内部类中的变量名,方法的局部变量、内部类的成员变量和外部类的成员变量同名的情况public class Outerprivate int size;public class Innerprivate int size;,2.4.5 内部类中的变量名,void dis

44、play(int size)size+;/display的形式参数this.size+;/Inner类的成员变量Outer.this.size+;/Outer类的成员变量,2.4.6 内部类如何被外部类引用,class Outerprivate int size=10;public class Innerpublic void display()System.out.println(+size);,2.4.6 内部类如何被外部类引用,public class TestInnerpublic static void main(String args)Outer outer=new Outer()

45、;Outer.Inner inner=outer.new Inner();inner.display();,2.4.7方法中的内部类,内部类并非只能在类里定义,也可以在几个程序块的范围之内定义内部类。如:在方法中,或在for循环体内,2.4.7方法中的内部类,class Outerprivate int outer_i=100;void test()for(int i=0;i5;i+)class Innervoid display()System.out.println(display:outer_i+outer_i);Inner inner=new Inner();inner.display

46、();,2.4.7方法中的内部类,class InnerClassDemopublic static void main(String args)Outer outer=new Outer();outer.test();,2.5类的继承,2.5.1 类继承的实现2.5.2 类继承的内容2.5.3 方法的覆盖2.5.4 super关键字2.5.5 Object类,2.5.1类继承的实现,通过继承可以简化类的定义Java只支持单继承,一个子类只能有一个父类class Subclass extends Superclass,2.5.2类继承的内容,子类继承父类非私有的成员变量和成员方法,但不继承父类

47、的构造方法,在子类的构造方法中可以用super(参数列表)调用父类的构造方法,2.5.2类继承的内容,如果子类的构造方法中没有显式地调用父类的构造方法,也没有使用this关键字调用重载的其他构造方法,则在产生子类的实例对象时,系统默认调用父类无参数的构造方法class Student extends Personpublic Student()super();/默认调用,2.5.3方法的覆盖,在子类中可以根据需要对从父类中继承的方法进行改造重写重写方法必须和被重写的方法具有相同的方法名称、参数类表和返回类型重写方法时不能使用比父类方法更严格的访问权限,如:父类的方法是public的,子类的就不

48、能是private的,2.5.4Super关键字,super调用父类的构造器super调用父类的成员,2.5.5Object类,Object类是所有类的父类,所有的Java类都默认继承Object类,2.6 final关键字,2.6.1 final关键字修饰类、属性和方法2.6.2 final注意点final 类不可被继承,也就意味着不能有子类final方法不可被改写final 属性在定义同时就要赋初始值,值被指定之后就不可被替换,2.7抽象类与接口,2.7.1 抽象类定义2.7.2 抽象方法的定义规则2.7.3 接口2.7.4 instanceof操作符,2.7.1抽象类定义,abstrac

49、t class 类名abstract 方法名(参数列表);abstract 方法名(参数列表);,2.7.1抽象类定义,Java中可以定义不含方法体的方法,方法体的实现由子类去做,这样的方法就是抽象方法,包含抽象方法的类就是抽象类抽象类中可以由一个或多个抽象方法抽象方法必须用abstract来修饰,带有抽象方法的类必须都声明为抽象类,2.7.2抽象方法的定义规则,抽象类和抽象方法都必须用abstract修饰抽象类不能实例化,即不能用new产生对象抽象方法只需声明不需实现带有抽象方法的类必须都声明为抽象类,抽象类的子类必须实现所有的抽象方法后才能被实例化,否则子类还是抽象类,2.7.3接口,如果

50、一个抽象类中的所有方法都是抽象的,那么可以将其定义为接口接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,没有变量和方法的实现,2.7.3接口,接口继承接口用extends关键字interface Animal extends Runnervoid breathe();,2.7.3接口,一个类可以在继承一个父类的同时,实现一个或多个接口,extends必须在implements前class Student extends Person implements Runner.,2.7.3接口,访问接口的成员变量类名.变量名对象名.变量名,2.7.3接口,接口小结实现一个接口就是要实现该接

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号