版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 开发一个简单的java应用程序1开发Java语言的公司:Sun (Sun Microsystems)太阳微电子公司开发2Java的3个版本?(JDK 1.5后)Java Platform Standard Edition(Java SE)标准版 Java Platform Enterprise Edition (Java EE) 企业版Java Platform Micro Edition(Java ME) 微小版JDK是什么:JDK(Java Development Kit)Java开发工具包。包括了JRE,是开发Java程序的工具。JRE是什么:JRE(Java Runtime E
2、nvironment)Java运行环境,运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是什么:JVM (Java Virtual Machine) Java虚拟机,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。3Java语言的几个主要特点?平台无关性:能运行于不同的平台上安全性:去掉了指针操作,内存由操作系统分配面向对象:利用类使程序更加利于维护分布式:可以使用网络文件和使用本机文件一样容易健壮性:检查程序编译和运行的错误4Java的三大核心机制虚拟机机制:利用虚拟机解释字节码(.class文件)执行java程序实现跨平台垃圾
3、收集机制:自动内存回收代码安全性机制:加载代码后校验代码后再执行代码5安装JDK的操作系统问题:(1)必须针对于不同的操作系统下载安装不同的JDK,例如windows下安装针对于windows的JDK,linux下安装针对于linux的JDK。(2)需要配置的相关环境变量?path:用于搜索外部命令,例如编译程序的javac命令,执行程序的java命令classpath:用于搜索类,即class文件,例如可以在不同的位置执行类文件配置环境变量的方式:在我的电脑属性中配置,持久有效6可以编写Java程序的常见开发工具:记事本,EditPlus,ULTRAEDIT,Eclipse,Jbuilder
4、,NetBeans,Myeclipse等。7Java文件的类型:(1)扩展名为java的文件:是Java源文件,属于编译之前的纯文本文件,存储java源代码。(2)扩展名为class的文件:是Java类文件,属于编译之后的二进制文件,存储字节码。Java是半编译半解释语言。8第一个Java程序,例:javac HelloWorld.java生成HelloWorld.classjava HelloWorld运行HelloWorld.classJava程序由类组成,main方法是整个程序的主入口。掌握main主方法的声明。第2章 Java语言基础第3章数组和字符串1Java语言中定义了3种注释形式
5、:(1)/ 单行注释,注释到行尾(2)/*-*/ 单行或多行注释(3)/*-*/可用于文档化处理的单行或多行注释2语句:Java语句以分号(;)结尾。语句块:一个语句块是以为边界关键字:java中一些赋以特定的含义,并用作专门用途的单词称为关键字(keyword)所有java关键字都是小写的。true和false虽然被用作特殊用途但不是关键字。Java关键字,见截图P15页表21。标识符:标识符用作给变量、类和方法命名,可以以下划线,$,字母,中文开头,首字母后可以跟字母、数字、下划线、$、中文。标识符区分大小写,标识符应见名知意,简洁。Java语言区分大小写。习惯上:类名:首字母大写,其余字
6、母小写,如果由多个单词构成,则每个单词的首字母大写。接口名:同类名变量名:首字母小写,如果由多个单词构成,则每个单词首字母大写。方法名:同变量名。常量:全大写,如果由多个单词构成,则用_连接。包名:全小写。3数据类型 整数类型(byte、short、int、long) 数值型 简单数据类型 浮点类型(float、double) 字符型(char) 布尔型(boolean):true、false数据类型 类 (class) 引用数据类型 接口 (interface) 数组字符串(String)简单数据表示数的范围:见P17页表22、3。Char型数据用来表示通常意义上的字符,字符常量是用单引号括
7、起来的单个字符,java字符采用Unicode编码,每个字符占两个字节,因而可以用16进制编码形式表示。Java语言还允许用转义字符来改变字符的含义。转义符见P20页表24数据类型之间的转换:ü Byte、short、char之间不会相互转换,这三者在转换时首先转换为int类型。ü 当系统需要的类型大于实际类型时,数据自动升级,(赋值时左大于右),例:Byte b=18;int i=b;int x=67;double d=x;float f=8.3f;long l=f; errorü 当系统需要的数据类型小于实际类型时,数据需强制转化。例:int i=10;byt
8、e b=(byte)i;double d=63.5;char c=(char)d;ü 有多种数据类型一起计算时,系统首先自动将所有数据类型转换成容量最大的那种类型,然后再进行计算。ü 数据类型大小关系如下:整数类:long > int > short > byte 浮点型:double > float 整型数据类型可以赋给浮点数据类型比如:float short float int float long double long 注意:char 可以赋给long和int ,但是不能赋给short 和byte(编译错误) 。char 可以赋给float和
9、double。byte b = (byte) true;这个转换成立吗?不成立,布尔值和数字是不兼容的,不能作任何转换。4变量在java中,使用变量之前,必须先申明变量的类型。变量是java程序中最基本的存储单元,其要素包括变量名,变量类型,和作用域。ü 声明变量的语法:类型 变量名, 变量名=初值;例如:int i; char c; float a, b, c;一条声明语句可以声明多个变量:例:int i = 10,j;ü 变量的作用域变量的作用域指一个变量起作用的范围,它决定了一个变量何时可以访问、何时不可以访问。Java中任何变量的作用域都从该变量声明之后开始,并且只
10、在该声明的语句块中使用,也就是该变量只能在声明它的那个花括号中使用。变量有分为成员变量(属性)和局部变量。成员变量:在类中声明的变量称为成员变量。使用范围:通常在类开始处声明,可在整个类中使用。局部变量:在方法或块(块由两个花括号)中声明的变量称为局部变量。使用范围:从声明处开始到它所在方法或块的结束处。例:int x = 4;/这之间只有x可以访问int y = 1;/x和y可以访问int z = 2;/x、y、z都可以访问z = 5;x = 4;/只有x和y可以访问,不可以访问z 5常量常量就是程序里持续不变的值,是不能改变的数据。ü 声明常量的格式如下:final 类型 常量名
11、,常量名=值;ü 整型常量:十进制:不能以0开头,多个09之间的数字十六进制: 以0x或0X开头 0x8a 0X56d八进制:必须以0开头 034 0376长整型:必须以L结尾 87L 345Lü 浮点数常量:float型:2e3f 0.6f double型:4.1d 1.23d 1.23ü 布尔常量:true 和 falseü 字符常量: a 5 ü 字符串常量:“hello” “8698” “nmain” 转义字符n表示换行ü null常量:null,表示对象的引用为空。6. Java中的运算符算术运算符、关系运算符、赋值运算符、
12、逻辑运算符、位运算符、条件运算符ü 算术运算符运算符运算范例结果+正号+33-负号b=4;-b;-4+加5+510-减6-42*乘3*412/除5/51%取模(求余)5%50+自增(前)a=2;b=+a;a=3;b=3;+自增(后)a=2;b=a+;a=3;b=2;-自减(前) a=2;b=-a;a=1;b=1;-自减(后)a=2;b=a-;a=1;b=2;+字符串相加“he”+“llo” “hello”两个整数之间的相除(/)运算结果还是整数,其结果是除法结果的整数部分。例如:5/2结果为2要获得实数结果,运算中至少一个浮点数。例如:5/2.0结果为2.5ü 关系运算符运
13、算符运算范例结果=相等于4=3false!=不等于4!=3true<小于4<3 false>大于4>3true<=小于等于4<=3false>=大于等于4>=3trueü 赋值运算符运算符运算范例结果=赋值a=3;b=2;a=3;b=2;+=加等于a=3;b=2;a+=b;a=5;b=2;=减等于a=3;b=2;a=b;a=1;b=2;*=乘等于a=3;b=2;a*=b;a=6;b=2;/=除等于a=3;b=2;a/=b;a=1;b=2;%=模等于a=3;b=2;a%=b;a=1;b=2;ü 逻辑运算符运算符运算范例结果!NO
14、T(非)!truefalse&&AND(短路与)false && truefalse|OR(短路或)false | truetrue在使用短路与(&&)时,如果第一个操作数(或表达式)为“假”,则不再计算第二个操作数(或表达式),直接返回“假”。在使用短路或(|)时,如果第一个操作数(或表达式)为“真”,则不再计算第二个操作数(或表达式),直接返回“真”。逻辑运算符只能用于布尔(boolean)类型之间;其结果值为布尔(boolean)类型。ü 条件运算符条件运算符是一个三目运算符,也是唯一的一个三元运算符,符号为“? :”,在程序中能
15、实现简单的判断功能。语法格式:表达式1?表达式2:表达式3其中表示1是一个布尔表达式,如果表达式1结果为true,则执行表达式2,否则执行表达式3。举例说明:求a,b的最大值。int a=4,b=6,max;max=a>b?a:b; /将a和b中的较大值赋给max7.Java中的控制语句(1) if(表达式).else.条件语句;(2) for(表达式). 循环语句;(3) while(表达式). 循环语句;(4) do.while(表达式).循环语句;(5) switch 多分支选择结构;(6) continue 结束本次循环语句;(7) break 终止执行switch或循环语句;(
16、8) return 从方法返回语句。8.条件语句分为四种:ü 单分支条件语句语法格式为:if(条件表达式) 语句或语句块;ü 二分支条件语句语法格式为:if(条件表达式) 语句或语句块1;else 语句或语句块2;ü 嵌套条件语句语法格式为:if(条件表达式) if(条件表达式) 语句或语句块;else 语句或语句块2;ü 多分支条件语句语法格式为:if(条件表达式1) 语句或语句块1;else if(条件表达式2) 语句或语句块2; else if(条件表达式n) 语句或语句块n;else 语句0;9.switch-case多分支选择语句语法格式为:s
17、witch(条件表达式) case 常量1: 语句1;break;case 常量2: 语句2;break; case 常量N: 语句N; break;default:语句;break;注意:ü 条件表达式的返回值类型必须是以下类型之一:int、byte、char、short、枚举常量。ü case子句中的值常量N必须是常量。且所有case子句中的值应是不同的。ü default子句是可选的。ü break语句用来在执行完一个case分支后,是程序跳出switch语句,即终止switch语句的执行。在一些特殊情况下,如多个不同的case值要执行一组相同的操
18、作,中间就可以不用break。10.for循环语句语法格式为:for(变量初始化表达式;循环条件表达式;迭代部分)语句或语句块;/循环体 for循环可以再嵌套for循环。注意:在for循环的初始化或迭代部分,可以有多个表达式,表达式之间用逗号隔开。例如:int count =0;for(int a= 1,b=10;a<b;a+,b) count+; 共循环多少次?11.while循环语句语法格式为:while(循环条件 表达式) 语句或语句块; 12.do-while循环语句语法格式为:do 语句或语句块;while(表达式);(注意分号绝对不能省略)注:if语句和循环语句的花括号在执行
19、的语句只有一句时可以省略。13continue结束本次循环语句使用continue语句可以立刻重新开始下一轮的循环,而不再执行循环后面的语句。14break终止执行switch和循环语句使用break语句可以立刻终止循环,开始执行循环后面的语句。对于退出循环:break和continue的区别:break是退出整个循环;continue是退出当前循环继续下一次循环。循环结构的使用:例1:求m,n的最大公约数。例2:菲波那契数列指的是这样一个数列: 1,1,2,3,5,8,13,2115return从方法返回语句return语句主要作用是退出当前方法,将程序控制转移到方法的调用者。一般格式为:
20、return 值或表达式;16方法调用语句方法调用语句是执行对象的某个方法。一个完整的方法调用语句由某个方法调用加上一个分号构成。调用语法格式为:类对象名称.方法名(参数);例如: System.out.println(“This is a statement call a method!”); 调用对象System.out的println方法。17数组ü 定义:是用来存储一组或多组相同类型数据的数据类型。ü 数据类型:可以是基本数据类型(例如:数字型、字符型、布尔型),也可以是复合数据类型(例如:数组、类、字符串和接口)。 数组本身就是一种复合数据类型,因此,数组的元素也
21、可以是数组,这样就构成了二维数组和多维数组。n 数组作为复合数据类型,与基本数据类型最大的区别:数组是通过引用来控制的,而基本数据类型是通过值来控制的。n 一维数组的声明: 格式: 类型 数组名 ; 或 类型 数组名; 举例:int a ; String b;n 数组的初始化有两种方法:一种是直接初始化,另一种是动态初始化。l 静态初始化格式: 类型 数组名 = 值1,值2,值n;举例:int a = 1,2,3; int b ; b = 1,2,3;l 动态初始化:格式:(1)声明时初始化: 类型 数组名 = new 类型 数组长度;(2)声明后初始化:类型 数组名 ; 数组名 = new
22、类型数组长度;注:数组的大小一经创建可不可以改变大小了?不可以,数组是定长的,一经创建就不能再改变大小了n 访问数组元素数组元素是通过数组名和下标来访问。未被初始化的数组,不能进行访问。格式:数组名下标Java中,数组的下标从0开始,直到 <数组长度-1>结束。获得数组的长度,通过length属性来获得:数组名.lengthn 数组的复制 方法: System.arraycopy(源数组,源数组起始位置,目标数组,目标数组起始位置,长度); 注:不管是要复制的数组,还是被复制的数组,都必须先初始化。例:int a = 1,2,3, b = new int3; System.arra
23、ycopy(a,0,b,0,3); /将数组a复制到bn 对象数组: 例:/定义一个对象数组,StringBuffer是一个字符串缓存类StringBuffer a = new StringBuffer2;/给对象赋值a0 = new StringBuffer(“Array0”);a1 = new StringBuffer(“Array1”);System.out.println(“a0=” + a0 + “ a1=” + a1 );a0.append(“ is Modified”); /追加字符串System.out.println(“a0=” + a0);注:请回顾String和Strin
24、gBuffer的区别ü 字符串的常用方法有哪些?P46-P49length()方法:求字符串的长度compareTo():比较字符串的大小equals():比较字符串是否相等trim():去除字符串首尾空格charAt()方法:可以返回指定位置的字符substring()方法:截取指定位置的子串indexOf()方法:查找子串的位置toLowerCase(), toUpperCase()方法:字符串大小写转换n 二维数组和多维数组 定义格式:类型 数组名 ; 或 类型 数组名; 举例: int a ; double b;这几种定义不合法:int a2 ; int b 2; int c
25、22;二维数组的初始化:二维数组的初始化也有直接和动态初始化两种方式。l 直接初始化格式: 类型 数组名= 值1,值2,值n , 值1,值2,值n.; 举例:int a = 1,2,3,4,5,6,7,8,9;l 动态初始化格式类型 数组名=new 类型长度1长度2; 长度1:表示行,长度2:表示列。 例:int a=newint35;类型 数组名=new 类型长度1;数组名0=new 类型长度20;数组名1=new 类型长度21;数组名长度1-1=new 类型长度2n;例:int a; a=new int3;a0=new int5; a1=new int8; a2=new int6;注:问1
26、:声明int a = new int3,a是一个二维数组,a0本身是什么类型的?二维数组的元素都是一维数组,a0是int类型的问2:可以把2个int型,3个double型,4个String型的值放到一个数组中吗?不可以,数组的元素类型必须是相同类型的。问3:操作数组比较方便的实用类?java.util.Arrays类提供了很多关于数组的实用方法n 数组的应用例1:将整数序列3,15,28,11,34,78,95,27,18首末颠倒过来。int a = 3,15,28,11,34,78,95,27,18; int i, length, temp; length = a.length; for(i
27、=0;i<(length/2);i+) /以下将数组元素ai和alength -1 - i的值互换 temp = ai; ai = alength -1 i; alength -1 i = temp; for(i=0;i<length;i+) System.out.print(ai + “ ”); 例2:从数据:32 25 78 69 13 97 86 38 62 9 中找到数据97所在的位置。用顺序查找(线性查找)方法编写程序。/声明并初始化数组int a = 32,25,78,69,13,97,86,38,62,9; int index = -1,i;/逐个元素与97相比较,找
28、到则退出循环,否则继续for(i=0;i<a.length;i+)if(ai = 97) index = i; break; if(index = -1) /表示该数不存在System.out.println(“ 97这个数不存在!”); elseSystem.out.println(“97这个数的下标是: ” + index); 例3:将数据:37 28 51 13 64为例,用冒泡法进行升序排列。 int a = 37,28,51,13,64; int i, j, n, temp; n = a.length; for(j=1;j < n ;j+ ) /共执行 n1 轮 for(
29、i=0;i< n j; i+) /第j轮 if (ai > ai+1) /交换ai与ai+1的值 temp = ai; ai = ai+1; ai+1 = temp; /打印排序后的结果 for(i=0;i < n;i+) System.out.print(ai + “ ”); 例4:两个矩阵相乘的例子。/声明并初始化数组 int a = 8,13,4,7,5,2; int b = 3,4,11,6,1,10; int result = new int33; int i,j,k; /通过嵌套循环实现矩阵相乘的运算 for(i=0;i<a.length;i+) for(j
30、=0;j<bi.length;j+) resultij = 0; for(k=0;k<b.length;k+) resultij += aik * bkj; /打印结果 System.out.println(“The result of a * b is : ”); for(i=0;i<result.length;i+) for(j=0;j<result i.length;j+) System.out.print(resultij + “ ”); System.out.println( ); /换行 第4章 对象和类 & 第5章构造方法、重载和封装第6章继承和多
31、态第7章抽象类和接口1. OOP是:Object Oriented Programming(面向对象编程)类和对象的区别 :类:生成对象的模板,是对一类事物的描述,是抽象的概念上的定义。对象:对象是实际存在的该类事物的每个个体,因而也称为实例。2Java中类的定义格式: 类的修饰符 class 类名 extends 父类名 变量声明; 构造方法定义; 其他方法定义;声明成员变量:public | protected | private static final 类型名 成员变量名;创建一个类的对象的格式: 类名 对象名=new构造方法(实际参数);在类的外部,访问类中的变量和调用类中
32、的方法格式: 对象名.变量名 对象名.方法名(实际参数) 方法的定义格式: public | protected | private 返回值类型 方法名(参数列表) throws 异常 .; 3类的修饰符(1)类访问权限修饰符:public(公共的)用关键字public修饰一个类,表明该类可以被任何其他类使用。如果省略,则这个类只能在它所在包中访问。 (2)abstract(抽象的)用abstract修饰的类是一个不完整的类,称为抽象类,该类中含有没有方法体的抽象方法。抽象类没有具体实例。(3)final(最终的)用final修饰的类称为最终类。最终类不能有子类。4类的成员一个类定义中主要可以
33、有以下2种类型的成员。(1)属性(成员变量)类中声明的变量称为域,用来描述类的属性或状态。一个类中的域既可以是基本数据类型,也可以是其他类的对象等。(2)方法(method)是对类中变量进行操作的可执行代码序列,定义了该类对象所具有的行为。5属性的初始化一个类中如果没有定义构造方法,则编译器会自动生成一个没有参数的构造方法,用来初始化类对象,并将类中变量自动初始化为该类型的默认值。 整型初始化为0; 实型初始化为0.0f、0.0d; 逻辑型初始化为false; 字符型初始化为 u0000; 类对象初始化为null,表明引用不指向任何内存地址。6成员变量的访问控制类的属性在类的里面都是可见的,类
34、中的所有方法都可以使用它们。在类的外部,类中属性的可见性由关键字public、private、protected来控制,称为类的属性的访问权限修饰符。 4种访问权限所使用的修饰符和含义: public:用public修饰的成员可以被所有其他的类来访问。 private:类中限定为private的成员只能被这个类本身访问,在类的外部,类的private成员是不可见的 。 protected:类中限定为protected成员。只有其子类(不论是否在同一个包中)以及同一个包内的其他类,才能访问该类的protected成员。 缺省的:这时类的成员具有包访问权限。注意:方法定义中的参数和方法体中的变量都
35、是局部变量,不能使用上面的访问权限修饰符。7方法的访问控制修饰符方法作为类的成员也有4种访问权限:public、private、protected和缺省的(没有访问控制修饰符)。含义与成员变量相同。8封装和公开如果把类中的变量用public修饰,则这些变量完全公开,可以直接访问和修改。面向对象程序设计中,通过类和类成员的访问控制级别的限定,较好地解决了封装和公开的问题。如果将成员变量标识为private,则它在类的外部不可见,使数据得到了封装。为了能够访问这些私有数据,就必须提供public或者protected的成员方法来获取(get)和设置(set)这些private变量的值。通常获取和设
36、置private变量的方法命名采用以下形式: public|protected 变量类型 get变量名() return 变量名; public|protected void set变量名(类型 参数名) 合法性检查并赋值; 9静态变量用static修饰的变量称为静态变量。 当一个变量用static修饰时,表明它不属于任何一个类的具体对象,而是所有对象共享,static变量这个存储单元被所有对象共享。该类的任何一个对象访问和修改它时,都是对这个共享的存储单元进行操作。由于静态变量属于整个类,即使没有创建任何对象时,类中的static变量也会存在,也可以使用静态变量,这时可以通过类名作前缀访问静
37、态变量: 类名.静态变量若创建了某个类的具体对象后,可以通过类名或对象名作前缀访问静态变量: 对象名.静态变量10最终变量(final)若类中的变量用关键字final修饰,则表明该变量一旦被显示的值(不能默认初始化)初始化后就不可能重新再赋值。因此,final修饰的变量通常是程序中不能改变的常量 。public static final 类型 常量名=初始值;常量名大写,名字中包含多个单字时用下划线分隔。圆周率常量Math.PI、自然常数Math.E等。基本数据类型包装类中的int类型的最大值Integer.MAX_VALUE、最小值Integer.MIN_VALUE等。用final修饰的引用
38、变量,也不能重新赋值来引用另一个对象,但可以修改final修饰的引用对象内的数据。11静态(static)方法用static修饰的方法称为静态方法,它不属于类的具体对象,而是整个类的类方法。两种方式调用静态方法: 类名.静态方法 对象名.静态方法一个类里面的静态方法中只能处理静态变量;静态方法中只能调用静态方法。12最终(final)方法关键字final可用来修饰类中的方法,称为最终方法。将一个方法标识为final的主要目的是防止子类重新定义继承自父类的方法。 13抽象(abstract)方法用关键字abstract修饰的方法,称为抽象方法。抽象方法只有方法头,没有方法体,而是以一个分号结束。
39、抽象方法的声明通常出现在抽象类和接口中。方法修饰符abstract和final不可能同时使用。14构造方法ü 构造方法的规则 构造方法名称必须与类名相同。 构造方法一定不能有返回值类型。 构造方法可以使用3种访问控制修饰符public、protected、private或缺省的,对应的访问级别与类成员一样。 构造方法不能用static修饰,因为构造方法只用于创建类的实例。 如果类中不定义任何构造方法,编译器会自动生成默认的无参数的构造方法;如果类中定义了构造方法,编译器不会自动生成默认构造方法。 类中的构造方法可以根据需要重载多个参数列表不同的版本。这些重载的构造方法可以相互调用,但
40、必须通过this()调用,且必须作为构造方法内的第一条语句。 子类构造方法中可以调用其直接父类的构造方法,但必须通过super()调用,且必须作为子类构造方法内的第一条语句。15构造方法的重载当一个类因构造方法的重载而存在多个构造方法时,创建该类的对象的语句会根据给出的实际参数的个数、参数的类型、参数的顺序自动调用相应的构造方法来完成对象的初始化工作。当一个类有多个重载的构造方法时,构造方法里面可以调用类的其他构造方法,但必须通过this()调用,且必须作为构造方法内的第一条语句。 16关键字this 类定义中使用this,当创建该类的对象后,this代表类对象自身。 类中通过this、后跟圆
41、点运算符,之后是类的实例变量名或实例方法名可以使用本类中的变量和方法。this.变量 this.方法() 静态变量和静态方法不能通过this作前缀来使用。 类中有多个重载的构造方法时,构造方法中可以通过this()调用其他构造方法,但必须是构造方法中的第一条语句。17类成员的继承和重新定义ü 定义子类的格式类的修饰符 class B extends A 类的变量定义; 构造方法定义; 方法定义;关键字extends表示继承关系,即类B是类A的子类、类A是类B的父类。注:Java中一个类只能有一个直接父类,称为单继承,但一个父类可以派生多个子类。Java的根类是Object类。
42、52; 类成员的继承子类继承某个父类后,子类便具有父类的特性,从程序代码的角度来说,子类便拥有了父类的所有非私有(private)变量和方法,这些变量和方法通过继承都变成了子类的成员。 ü 子类添加成员在子类中可以加入自己的变量和方法。ü 重新定义从父类继承来的成员变量隐藏和方法覆盖 变量隐藏当一个父类变量不适合子类时,子类可以把从父类继承来的同名变量重新定义。子类若要引用父类的同名变量,要用关键字super作前缀加圆点操作符引用父类的同名变量: super.变量名 方法覆盖(方法重写)把从父类继承来的方法重写,称为方法覆盖(重写)。子类重写父类的方法时,方法头要与父类一样
43、,只是对方法体重写,从而完成满足子类的要求。 如果子类中调用被覆盖的父类中的同名方法,通过super关键字作前缀加圆点操作符实现调用: super.方法名()ü 方法覆盖的规则参数列表完全相同;返回类型相同;子类方法访问权限不能缩小;子类方法不能抛出新的异常。 ü 方法覆盖与方法重载的区别:方法的重载是指:在同一个类里定义多个同名方法,它们的参数列表不同,可以有不同的返回值类型。重载方法调用时根据其参数类型、个数和顺序来区分。方法覆盖(重写)是指:子类把继承来的方法重新定义,即在不同的类里定义同名的方法,方法头一样,但方法体不同,即方法实现的功能不同,从而满足子类自己的特殊
44、要求。 18关键字super关键字super的使用规则: super.变量名:引用被子类隐藏的父类中的变量; super.方法名:调用被子类覆盖的父类中的方法; super(参数):子类构造方法中调用父类构造方法,但必须是子类构造方法中的第一条语句。this( )和super( )调用只能有其一,不能同时都有。19父类和子类对象的转换Java语言允许父类对象和子类的对象之间进行类型转换。子类对象可以自动向父类对象转换,但父类对象转换为子类对象时,必须要强制类型转换,转换的格式为: (子类名)父类对象注:当子类实例赋值给父类对象引用后,父类对象引用的实际上是子类实例,但通过这个父类引用只能引用子
45、类中继承下来的那些成员。即若成员变量出现隐藏,引用的是父类变量。但若成员方法出现覆盖,引用的是子类方法。例:public class Animal public class Cat extends Animal n Cat c1= new Cat(); n Animal a = c1;20提问:ü 一个java源文件可以写多个类吗?o 可以,但必须只能有一个公有类,并且文件名和公有类的类名相同。ü 类中有哪些成员?有属性(成员变量),方法,构造器(构造方法)ü 构造方法和普通方法的区别?构造方法没有返回值,方法名必须和类名相同,需要用new语句调用构造方法。
46、52; 实例成员和静态成员的区别?实例成员:是属于对象实例的,用对象.成员名称语法调用静态成员:和对象实例无关,是属于类本身的,用类名.成员名称语法调用ü 静态方法可不可以直接调用同一个类中的非静态方法?不可以,静态方法不能直接调用一个非静态成员,需要用对象调用。ü 类的继承是谁继承谁?是子类继承了父类,子类也称为派生类,父类也称为超类或基类ü 子类继承了父类的什么东西? 子类可以继承父类的数据域(属性),方法,但构造器不能继承ü 私有成员能被子类继承吗?不能继承。ü Object是什么类?这个所有类的根类,任何类如果没有写显式的继承语句,默认
47、都是直接继承Object类的ü java中是单继承还是多继承?是单继承,一个子类只能有一个父类21方法调用过程中参数的传递:按值传递,但不同类型参数,效果不同。要求结合程序会分析程序运行结果。21抽象类一种表示抽象概念、不能被实例化的类,其作用是为派生类提供一个恰当的父类。Java中的抽象方法是只有方法头、没有方法体的方法。如果一个类中包含抽象方法,则该类必须声明为abstract。抽象方法只能存在于抽象类(或接口)中。如果一个类继承自某个抽象类,而没有具体实现其父类中的所有抽象方法,则该类也必须声明为抽象类(用abstract修饰)。 22接口(interface)接口实现了与类的
48、多继承相似的功能。Java语言的接口中,只能定义静态常量和抽象方法。由于接口中包含的方法都是抽象方法,因此, Java中的接口可以看成是一个没有具体实现的“类”。接口需要定义类来实现,都可以在类声明中使用关键字implements来声明实现某些接口。 接口的定义中包含的是抽象方法,而编写抽象方法的方法体,实现方法的特定功能都是在实现接口的类中具体完成的 。接口也可以继承。一个类可以同时实现多个接口。 23自定义接口和实现接口ü 定义好的接口,如果自成一个文件,文件名保存为:接口名.java。ü 接口的定义格式:public interface 接口名称 extends 父接
49、口名列表 /静态常量 publicstaticfinal 数据类型 变量名=常量值; /抽象方法 publicabstract 返回值类型 方法名(参数列表); 说明:(1)接口中的成员变量必须是public(公有的)、static(静态的)和final(最终的)。 (2)接口中的成员方法必须是public(公共的)和abstract(抽象的)。 (3)接口也具有继承性,通过关键字extends表明继承关系。 24实现接口一个类可以实现一个或多个接口,声明实现接口的关键字是implements,后跟要实现的接口名。如果接口中有多个抽象方法,而实现接口的类只需使用其中的一个,也必须为其他抽象方法加上花括号,只是花括号中没有语句。ü 实现接口的类定义格式: 修饰符 class 类名 extends 父类名 implements 接口A,接口B, 类的成员变量和成员方法; 为接口A中的所有方法编写方法体,实现接口A; 为接口B中的所有方法编写方法体,实现接口B; 25包包实际上就是物理上的文件夹,可以把类放到不同的包中。问题:&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度白蚁防治与森林资源保护合同3篇
- 平面设计岗位心得体会
- 2025年文化旅游PPP项目合同文本编制与审核流程2篇
- 业务分析经理年终总结
- 2025-2030年中国云母制品产业发展现状及前景规划研究报告
- 2025-2030年中国丙烯酸羟乙酯行业规模分析及投资前景规划研究报告
- 2025-2030年中国adc发泡剂市场需求规模及发展趋势预测报告
- 2025年冀教版六年级英语下册月考试卷
- 二零二五年酒店拆除工程拆除材料回收与再利用合同3篇
- 2025年仁爱科普版六年级数学上册阶段测试试卷含答案
- 生物化学课件
- 内蒙古自治区巴彦淖尔市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- (精选word)洪恩识字-生字卡片1-200
- 课文背书统计表
- 三年级语文下册教案-14 蜜蜂3-部编版
- 苏教版小学数学四年级下册全册教案
- 押金收据条(通用版)
- 药理治疗中枢神经系统退行性疾病药.pptx
- 强三基反三违除隐患促安全百日专项行动实施方案
- 新人教版七年级数学上册全册专项训练大全
- 标准预防--ppt课件
评论
0/150
提交评论