版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java语言程序设计,学习目标:,掌握面向对象的程序设计的思想、方法及其特征 学会使用Java语言进行程序设计 学会运用面向对象方法分析和解决实际问题的能力,第一章,Java 概述,Java语言是由Sun公司于1995年5月23日正式推出的面向对象的程序设计语言,集安全性、简单性、易用性和平台无关性于一身,适合网络环境下编程使用。,Java的诞生,程序设计语言经历:,一、程序设计语言,高级语言:,二、Java语言的特点,简述Java历史 Java的特点: 简单性 面向对象 安全性 平台无关 多线程 网络功能 执行效率,Windows 操作环境,Unix 操作环境,Mac 操作环境,Java与C
2、/C+的主要区别,跨平台: C/C+语言编译为机器码;Java语言编译为字节码,通过JVM编译为机器码 废除指针: C/C+语言有指针类型;Java语言没有指针类型 继承: C+允许多继承;Java语言仅允许单继承 速度: C/C+运行速度快;Java运行速度慢,三、Java语言的开发环境,从 Software Development Kit),并利用命令行方式操作 javac(编译器);java(解释器) Java集成开发环境(IDE)有: JBuilder 、Visual Age for Jave、Visual J+、Visual Caf等,四、运行Java程序的基本过程,利用编辑器编写
3、Java源程序 源文件名:主类名.java 利用编译器(javac)将源程序编译成字节码 字节码文件名:源文件名.class 利用虚拟机(解释器,java)运行 运行过程:载入、代码校验、解释执行 如:java 源程序名.class,介绍UltraEdit编辑器,从网站下载ultraedit10cn.exe打包文件 学习使用编辑功能 了解软件支持多种文件格式,有 (*.txt、*.doc、*.ini、*.html、*.java等),第二章,Java 基础,一、Java符号,Java语言采用Unicode字符集,它由16位数组成,而通常采用的ASCII码也被包含其中。 Java符号分为:标识符、
4、关键字、运算符和分隔符。,标识符,Java 的标识符由字母、数字、_和$组成,其中字母可以是大写或小写的英文字母,数字为 0 到 9,长度不限,但实际命名不宜过长。 标识符的第一个字符必须为字母、下划线“_”或美元符号“$” 。标识符区分大小写。 标识符用来命名变量、符号常量、数组、方法、类、对象、接口、包等。为了提高程序的可读性,标识符最好“见名知义”,而且规范大小写的使用方式。,Java关键字,关键字也称为保留字,是 Java 语言规定了特定含义的标识符。用户只能按照系统规定的方式使用,不能自行定义。 关键字一律用小写字母表示。按用途划分为:数据类型、语句、修饰、方法、类、接口和包。,运算
5、符和分隔符,将如“+”符号称为运算符。Java语言中包含有算术运算符、逻辑运算符、位运算符等。 分隔符被用来区分 Java 源程序中的基本成分(标识符、关键字、分隔符、运算符和常量),分隔符分为注释、空白符和普通三种。,注释,注释是为源程序增加必要的解释说明的内容,其目的是提高程序的可读性,书写注释是编写程序的良好习惯。Java中有三种形式的注释: / 注释部分 (单行) /* 注释部分 */ (多行) /* 注释部分 */ (多行),二、数据类型,Java基本数据类型,三、常量与变量,整型常量:十进制、八进制和十六进制 浮点型常量:double(双精度)、float(单精度) 字符型常量:单
6、引号括起来的单个字符 布尔型常量:true 和 false 字符串常量:双引号括起来的字符序列,定义变量,定义变量有两个任务:一是定义变量的名称; 二是定义这个变量的数据类型 在 Java 语言中,所有的变量必须先定义后使用。其格式为: 数据类型 标识符1=初值,标识符2.; 如果变量定义的是基本数据类型,变量在声明时就为其分配内存空间,否则,还需要用 new 为声明的变量分配空间。,编写Java程序需要注意的几点,Java 区分大小写 类定义不能嵌套 一个程序中可以有一个或多个类,但其中只能有一个主类 源程序编写完毕,应该用主类名作为文件名,再加后缀 .java 存储成磁盘文件,Java举例
7、,public class exp1 public static void main(String args) byte a=015; /八进制 byte b=20; /十进制 byte c=0 x25; /十六进制 int x=10; float y=95.63f; double z=3.15647; System.out.println(“a=”+a+“ ”+“b=”+b+“ ”+“c=”+c); System.out.println(“x=”+x+“ ”+“y=”+y+“ ”+“z=”+z); ,四 语句、表达式和运算符,语句是构成程序的基本单元,它由一个或多个表达式组成。一条语句是以分
8、号“;”作为结束符。 表达式是包含运算符和操作数的算式。表达式可以是程序语句的一部分,也可以是一个独立的程序语句。 运算符规定表达式中各变量和常量运算的符号。,运算符,算术运算:+、-、*、/、%、+、- 逻辑运算: double y=95.63; double z=3.1415926; int j=x*(int)y; double k=x*z; System.out.println(i=+i); System.out.println(j=+j); System.out.println(k=+k); ,第三章,Java 流程控制,一、选择结构控制,Java语句提供了两条基本的分支选择语句if和
9、switch。if语句应用在“二选一”的条件下,而switch语句应用在“多选一”的条件下。它们都是对条件表达式进行判断,针对不同的结果,决定转向要执行java语句。,if语句,if (条件表达式) 语句 if (条件表达式) 语句1 else 语句2,条件?,语句,True,False,条件?,语句1,True,False,语句2,Switch语句,switch(表达式) case 值1:语句块1; break; case 值2:语句块2; break; case 值n:语句块n; break; default: 语句块n+1; ,二、循环结构控制,循环语句的作用是在一定条件下,反复执行一段
10、程序代码,被反复执行的程序称为循环体。 Java语句提供的循环语句有:while语句、dowhile语句和for语句。,while语句,while(条件表达式) 循环体 含义:当循环条件表达式为true时,重复执行循环体。,dowhile语句,do 循环体 while(条件表达式); 含义:重复执行循环体,直到循环条件表达式为false。,for语句,for(表达式1;表达式2;表达式3) 循环体 表达式1:循环初值; 表达式2:返回布尔值的条件表达式,判断循环是否继续; 表达式3:修整循环变量,改变循环条件。,True,设定初值,条件?,修改表达式,False,循环体,三、跳转语句,brea
11、k语句:使程序的流程从一个语句块内部跳转出来。通常在switch和循环语句中使用,如从switch语句的分支中跳出,或从循环体内部跳出。 continue语句:只在循环语句中使用。其作用是终止当前这一轮的循环,跳过本轮循环剩余的语句,直接进入下一轮的循环。,Java举例 跳转程序,public class ZhiShu public static void main(String args) int i,j,k; boolean flag; for(i=2;i=50;i+) flag=true; k=i/2; for(j=2;j=k;j+) if(i%j=0) /如果该数可以整除其余数,则不可
12、能是质数 flag=false; break; if(flag) System.out.print(i+ ); ,第4章,方法,类由数据成员和方法组成。方法定义类对象的行为或动作,即对象可以执行的操作,是相对独立的程序模块。本章学习方法的声明和调用。,一、方法声明,在Java程序中,方法只能在类中声明,格式如下: 修饰符 返回值类型 方法名 (参数表) 声明部分 语句部分 ,例4-1 定义计算平方的方法,static int square(int x) int s; s=x*x; return (s); ,二、方法调用,1 方法表达式 对于有返回值的方法作为表达式或表达式的一部分来调用,其在表
13、达式中出现的形式为: 方法名(实际参数表),例4-2 调用前面定义的方法,public class SquareC static int square(int x) int s; s=x*x; return (s); public static void main(String args) int n = 5; int result = square(n); System.out.println(result); ,例4-3 以方法语句方式调用方法,class AreaC static void area(int a , int b ) int s; s = a * b; System.out
14、.println(s); public static void main(String args) int x = 5; int y=3; area(x, y); ,2 方法语句,方法名(实际参数表) 即以独立语句的方式调用方法。 参数表的使用形式同方法表达式调用法。,例4-4 无参方法,class SumC static void sum( ) int i, j, s; i=3; j=6; s=i+j; System.out.println(s); public static void main(String args) sum( ); ,三、参数传递,例4-5 参数传递实例 public
15、class Swaping static void swap(int x , int y ) int temp ; System.out.println(Before Swapping); System.out.println(x= +x+ y= +y); temp = x; x = y; y = temp; System.out.println(After Swapping); System.out.println(x= +x+ y= +y); ,例4-5 参数传递实例(续),public static void main(String args) int u=23 , v=100; Sys
16、tem.out.println(Before Calling); System.out.println(u= +u+ v= +v); swap(u, v); System.out.println(After Calling); System.out.println(u= +u+ v= +v); ,例4-5 参数传递实例(续),输出结果如下所示: Before Calling u= 23 v= 100 Before Swapping x= 23 y= 100 After Swapping x= 100 y= 23 After Calling u= 23 v= 100,四、递归,所谓递归就是用自身
17、的结构来描述自身,最典型的例子是对阶乘运算,例4-6:采用递归算法求n!。,递归定义: fac(n)=1 n=1 n*fac(n-1),递归算法程序,class Factorial static long fac( int n ) if (n= =1 ) return 1; else return n*fac(n-1); ,递归算法程序(续),public static void main(String args) int k ; long f; k=Integer.parseInt(args0); f=fac(k); System.out.println(f); ,第5章,数组,一、一维数组
18、,1 一维数组的声明,一维数组声明的格式为: 类型标识符 数组名 或 类型标识符 数组名 类型标识符指定每个元素的数据类型,如int表明数组中的每个元素都是整型数。,2 一维数组的初始化,用new初始化数组 先声明数组再初始化 声明的同时进行初始化 赋初值初始化数组,二、多维数组,1 二维数组的声明 二维数组的声明方式与一维数组类似,只是要给出两对方括号。二维数组声明形式如下: 类型标识符 数组名 或 类型标识符 数组名,2 二维数组的初始化,用new初始化二维数组 先声明数组再初始化 声明的同时进行初始化 赋初值初始化数组,三、数组的基本操作,数组的引用 数组的复制 数组的输出,四、 数组应
19、用举例,例5-4 排序 import java.io.*; class ArraySort public static void main(String args) throws IOException BufferedReader keyin =new BufferedReader(new InputStreamReader(System.in); int a,i, j, k, temp; String c; System.out.println(Input the number of array elements!);,例5-4 排序(续),c=keyin.readLine(); temp
20、=Integer.parseInt(c); a = new inttemp; System.out.println(Input + temp + numbers. One per line!); for ( i=0; ia.length; i+) c=keyin.readLine(); ai=Integer.parseInt(c); System.out.println(After sorting!);,例5-4 排序(续),for ( i=0; ia.length-1; i+) k = i; for( j = i + 1 ; j a.length; j+) if (aj ak ) k = j
21、; temp = ai; ai= ak; ak = temp; for ( i=0; ia.length; i+) System.out.println(ai); ,五、数组参数,在java的过程中,允许参数是数组。在使用数组参数时,应该注意以下事项: (1)在形式参数表中,数组名后的括号不能省略,括号个数和数组的维数相等。不需给出数组元素的个数。 (2)在实际参数表中,数组名后不需括号。 (3)数组名做实际参数时,传递的是地址,而不是值,即形式参数和实际参数具有相同的存储单元。,六、 字符串,字符数组与字符串 字符串 字符串操作 字符串数组,第六章,面向对象的程序设计概念,一、面向对象的基本
22、概念,符合人们日常自然的思维习惯; 降低、分解问题的难度和复杂性,提高整个求解过程的可控制性、可监视性和可维护性; 获得较高效率和较满意效果。,面向对象程序设计:,对象与类,简单地说: 对象是表示现实世界中某个具体的事物; 类是对对象的抽象描述。,面向对象设计思想,1、抽象:是从特定的实例中抽取共同的性质以形成一般化概念的过程。,对象(object),计算机世界中的对象是把数据及其相关的操作封装在一起所构成的实体。 封装的实体 = 数据+方法(行为) 数据:属性或状态 方法: 作用于数据上的操作 封装:属性的访问和变化通过方法完成,二、类(class)的概念,类:是一种抽象的数据类型,它是所有
23、具有一定共性的对象的抽象。本质上可以认为是对对象的描述,使创建对象的“模板”。 类的某一个对象则被称为是类的一个实例,是类的实例化结果。,实例化,抽象,通信的相关性,利用通信实现一个对象与另一个对象的信息传递,信息传递的三个要素: 信息接收对象; 接收对象中哪个方法完成指定动作; 此方法需要的参数;,消息(message),消息 对象之间相互请求或相互协作的途径,是要求某个对象执行某项操作的规格说明 消息内容 通常包含接收对象及请求接收对象完成的功能信息 发送对象 发出消息,请求接收对象响应 接收对象 收到消息后,经过解释,激活方法,予以响应,方法(method),方法 是对象的行为方式(操作
24、) 对象与外界的接口 作用 改变对象的属性 返回对象的属性,object1,object2,面向对象方法的主要优点,与人类习惯的思维方法一致 可重用性性 可扩展性 可管理性,三、定义类,修饰符 class 类名 extends 父类 implements 接口名 类成员变量声明; 类方法声明; ,Java实例 定义类,class Point private int x,y; public void setPoint(int a,int b) x=a; y=b; public int getX() return x; public int getY() return y; public Stri
25、ng toString() return +x+,+y+; ,四、对象的定义,修饰符 类名 对象名=new 类名(实参列表); 或 修饰符 类名 对象名; 对象名=new 类名(实参列表);,创建对象,类名 对象名; Point thePoint; 注意:类属于复合数据类型,因此,在声明对象时,系统并没有为对象分配空间,用户需要应用new完成分配空间的任务。 thePoint=new Point( );,对象的引用,引用成员变量 对象名.成员变量名 引用方法 对象名.方法名(参数列表),Java实例 创建对象,续接Java实例定义类 public class PointExcise publi
26、c static void main(String args) Point thePoint=new Point(); thePoint.setPoint(3,5); System.out.println(“坐标x=”+ thePoint.getX(); System.out.println(“坐标y=”+ thePoint.getY(); System.out.println(thePoint.toString(); ,对象的初始化,类中包含有成员变量和方法,当使用类声明并创建对象时,使用new关键字,这时系统为对象创建自己的内存区域并自动调用构造方法初始化成员变量。,构造方法,构造方法是一
27、个特殊的成员方法,它与类名相同。在创建对象空间后,系统自动根据参数调用相应的构造函数。构造函数的主要功能是为数据成员赋初值。,构造方法的特点,构造方法名与类名相同; 构造方法没有返回类型,也不是void; 构造方法的主要作用是对类对象的初始化。如果没有定义构造方法时,各种类型的默认值; 构造方法不能由编程人员显式地直接调用; 使用不同数量、不同类型的参数对类初始化会拥有多个构造方法;,Java实例 定义构造方法,class Student String name; String address; String grade; Student(String x1,String x2,String
28、x3) /定义构造方法 name=x1; address=x2; grade=x3; ,public static void main(String args) Student zhang; /声明并创建zhang对象 zhang=new Student(张三,西安市兴庆路1号,2003级国际贸易3班); Student wang; /声明并创建wang对象 wang=new Student(王五,西安市翠华路12号,2003级电子技术3班); System.out.println(+zhang.address+zhang.grade); System.out.printl
29、n(+wang.address+wang.grade); ,Java实例(续),使用new创建对象时,Java系统自动调用与类同名的构造方法。,Java实例 类为方法参数,class Position private int X,Y; Position(int x,int y) X=x; Y=y; public int getX() return X; public int getY() return Y; public double distance(Position a,Position b) /计算两个Position对象a,b两点的距离 return Math.sqr
30、t(a.getX()-b.getX()*(a.getX()-b.getX() +(a.getY()-b.getY()*(a.getY()-b.getY(); /计算距离的公式 ,Java实例(续),public static void main(String args) int x1,x2,y1,y2; double dis; Position source=new Position(0,0); /创建Position对象source Position target=new Position(5,8); /创建Position对象target x1=source.getX(); y1=sour
31、ce.getY(); x2=target.getX(); y2=target.getY(); System.out.println(第一个点的坐标位置为(+x1+,+y1+); System.out.println(第二个点的坐标位置为(+x2+,+y2+); dis=source.distance(source,target); System.out.println(两个点的距离是:+dis); ,五、类成员变量的定义,定义: 访问权限符 static final 类型 变量名 权限修饰符有: public、protected和private static:在成员变量前说明该变量是静态变量。
32、 final:在成员变量前说明该变量是一个最终变量,修饰符 static,static可以修饰类中的属性和方法。 静态属性在类定义时静态地分配空间。它属于类,不属于某个特定的对象,因此可以通过类进行访问。往往将属于类的公共属性说明成static。,Java实例 static成员变量,class StaticTest public int x=1; public static int y=1; public class StaticTester public static void main(String args) int i; StaticTest.y= StaticTest.y +1; S
33、taticTest m=new StaticTest(); StaticTest n=new StaticTest(); m.x= m.x +3; m.y= m.y+3; n.x= n.x+5; n.y= n.y+5; System.out.println(m.x=+m.x+ + m.y=+m.y); System.out.println(n.x=+n.x+ + n.y=+n.y); ,Java实例 static方法,class Sta_method int width,height; public static double area(int width,int height) return
34、 width*height; public static void main(String args) int i,j; double f; i=Integer.parseInt(args0); j=Integer.parseInt(args1); f=Sta_method.area(i,j); /直接引用此方法 System.out.println(Area=+i+*+j+=+f); ,修饰符 final,用final声明的类(最终类)不能再有子类;方法(最终方法)不能再被覆盖或重载;成员变量(最终属性)初始化后,不能再被赋值也就是修改成员变量的值(如PI=3.1415926是不能改变的)。
35、,Java实例 final,class FinalCal private double r; final double PI=3.14159; final double area(double r) return (PI*r*r); public static void main(String args) FinalCal d=new FinalCal(); /定义类对象dd System.out.println(“Area=”+d.area(12.3); /引用类中的area()方法 ,修饰符 this,将当前对象的引用变量传递给另一个方法; 如果方法体内部定义的变量与成员变量名字相同或方法
36、的入口参数与成员变量名相同。 如:class TestColor int r,g,b; TestColor(int r,int g,int b) this.r=r; this.g=g; this.b=b; ,Java实例 this,class Point private int x,y; public void setPoint(int a,int b) x=a; y=b; public int getX() return x; public int getY() return y; public String toString() return +this.getX()+,+this.get
37、Y()+; /引用类的方法 public static void main(String args) int i,j; i=Integer.parseInt(args0); j= Integer.parseInt(args1); Point dot=new Point(); dot.setPoint(i,j); System.out.println(dot.toString(); ,数学函数类 Math类库,格式: 类名.数学函数方法名(类型 实参1,类型 实参n ) 例: public class Max public static void main(String args) int x,
38、y; x=Integer.parseInt(args0); y= Integer.parseInt(args1); System.out.println(最大值是+Math.max(x,y); ,第七章,类的封装、 多态和继承,一、类的封装,类中包含有一个或多个成员变量和方法; 定义的public的方法是这个类对外的接口部分,通过调用它们可以与当前类交换信息; 通过接口部分修改类中某些属性,从而避免直接修改类中的数据,这体现了数据封装思想; 封装机制就是类包含有成员变量和方法,类的设计者为用户提供类对象可以访问的部分,而对于类中的其他成员变量和方法隐藏起来,用户无法访问。,封装特性,在类的定义
39、中设置对对象中的成员变量和方法进行访问的权限; 提供一个统一供其他类引用的访问; 其它对象不能直接修改本对象所拥有的属性和方法。,访问控制修饰符,访问控制符是一组起到限定类、属性或方法被程序里的其他部分访问和调用的修饰符。 类:public、缺省 属性和方法:public、private、protected、private protected、缺省,public(公有),若类声明为public,则表明这个类可以被所有的其他类访问和引用,即只要其他包中的类在程序中使用import语句引入public类,就可以访问这个类内部的可见的成员变量、调用可见的方法。 若成员变量声明为public,其他类的
40、方法可以直接访问它,但这样破坏了封闭性 若方法声明为public,其他类可以直接调用这个方法,这样的方法往往作为操作类对象的接口,private,用private修饰的属性和方法只能被类自身访问和修改,而不能被任何其他类(包括子类)获取和引用。应该将不希望他人随意引用或修改的属性设置成private,以此将它们隐藏起来,从而实现面向对象的程序设计思想。,protected,用protected修饰的成员变量可以被三种类所引用: 该类自身 同一个包中的其他类 在其他包中的该类的子类 作用: 允许存在其他包中该类的子类访问其父类的特定属性。,缺省(friendly),若没有设置访问控制符,则说明该
41、类、属性或方法具有缺省访问控制权限。这样的类、成员变量和方法只能被同一个包中的其他类访问和引用,因此,我们又将其称为包访问性。,Java实例 类、成员变量、方法的引用,class StudentsScore public static int passPoint=350; private String studentId; private String name; private int score; public StudentsScore(String studentId,String name,int score) this.studentId=studentId; =
42、name; this.score=score; public int getScore() return score; public String getName() return name; ,Java实例(续),class TestClient public static void main(String args) StudentsScore student1= new StudentsScore(20010101,zhang3,560); if(student1.getScore() -StudentsScore.passPoint=0) System.out.println(gree
43、ing + student1. getName() + for pass this test); else System.out.println(Sorry ! +student1. getName() + not pass this test); ,访问控制权限控制小结,二、多态机制,多态是指一个程序中存在着同名的不同方法。在面向对象的程序中多态表现为,可以利用重载在同一类中定义多个同名的不同方法实现多态,也可以通过子类对父类方法的覆盖实现多态。,方法的重载,重载是指在同一类中,同一个方法名被定义多次,但采用不同的形式参数列表,包括形参的个数、类型、顺序的不同来区分重载的方法。调用方法时,系
44、统是通过方法名和参数确定所调用的具体方法。这种现象叫做方法的重载。,构造方法的重载 实例,public class Point protected int x, y; public Point() setPoint( 0, 0 ); public Point( int a, int b ) setPoint( a, b ); public void setPoint( int a, int b ) x = a; y = b; public int getX() return x; public int getY() return y; public String toString() retu
45、rn + x + , + y + ; ,方法的覆盖,Java允许子类对父类的同名方法进行重新定义,也就是子类中定义的方法与父类中已定义的方法名称相同,但方法的内容不同,这种多态就称为方法覆盖。 由于父类与子类有同名方法,所以在引用方法时需要指明引用的是父类的方法还是子类的方法。,多态特性,不同的对象收到同一个消息可产生完全不同的效果,这一现象叫做多态。 多态的效果 用户发送一个通用的消息,而实现 的细节则由接收对象自行决定。,三、类的继承,在 Java 中,类是一个层次结构,其中Object为特殊超类或基类,所有的类都直接或间接地继承Object类; 子类继承父类的属性和方法,同时也可以修改父
46、类的属性或重载父类的方法,以及在父类的基础上添加新的属性和方法。因此,父类和子类之间反映的是“一般与特殊”的关系。,父类与子类,在类的继承中,被继承的类称为父类,继承而来的类则称为子类。有多个子类共同继承一个父类,那么这个父类就是多个类的基类。 Java语言只支持单继承,如果要定义多继承,可以使用将要讲解的接口方法。,继承的实现,定义继承的形式为: 访问权限 class 类名 extends 父类 类体 Java中的继承是通过extends关键字来实现的,在定义类时使用extends关键字指明新定义类的父类,就在两个类之间建立了继承关系。新定义的类称为子类,它可以从父类那里继承所有非priva
47、te的属性和方法作为自己的成员。,子类与父类的成员变量与方法,子类继承父类的所有成员变量和方法,但不包括父类中的由private修饰的部分 子类中新增加的属性和方法是对父类的扩展 子类中定义的与父类同名的属性是对父类属性的隐藏,同名的方法是对父类方法的覆盖,Java实例成员变量的继承,子类在继承父类成员变量时,只继承父类中非私有的成员变量。 class Shape public int x,y; private int m,n; public Shape() /父类Shape的构造方法 x=10; y=20; m=100; n=200; System.out.println(x=+x+ +y=
48、+y); System.out.println(this is a Constractor of shape); public void measure() int s; s=x*y; System.out.println(result=+s); private void show() System.out.println(x=+x+ +y=+y); ,Java实例(续),class Rectangle extends Shape public static void main(String args) int width=30,height=10; Rectangle tt=new Rect
49、angle(); /创建对象时要引用构造方法 tt.x=width; tt.y=height; tt.measure(); /* width=tt.m; 对于Rectangle子类不能继承父类的私有成员变量的值,所以此语句会产生语法错误*/ / height=tt.n; 与上相同 / tt.show(); /不能引用show()私有方法 ,子类与父类成员变量同名,子类中定义的成员变量与父类中的成员变量名称相同 ; 子类在引用与父类成员变量同名的此成员变量时,默认是引用子类自己定义的成员变量,而将从父类那里继承而来的成员变量“隐藏”起来; 如果在子类程序中要引用与子类同名的父类的成员变量时,可以
50、使用“super”关键字来指示;,Java实例成员变量同名,class SuperA private int privateData=10; public int pubSuperData; private void privateMethod() System.out.println(super privateData=+privateData); System.out.println(Super classs privateMethod); public void pubSuperMethod() privateMethod(); System.out.println(Super clas
51、ss publicSuperMethod); ,Java实例(续),class SubB extends SuperA private int privateData=20; private void privateMethod() System.out.println(sub privateData=+privateData); System.out.println(Subclasss privateMethod); public void pubSubMethod() privateMethod(); super.pubSuperMethod(); System.out.println(S
52、ubclasss publicSubMethod); public class ExtendTest2 public static void main(String args) SubB t=new SubB(); t.pubSubMethod(); ,Java实例方法的覆盖,class Shape public int y; public Shape() y=20; System.out.println(this is a Constractor of shape); public void measure() System.out.println(super_y=+y); class Re
53、ctangle extends Shape public int y; public void measure() super.measure(); /引用父类的measure()方法 y=super.y+y;,Java实例(续),System.out.println(Shape.y=+super.y); /引用父类的成员变量y System.out.println(Rectangle.y=+y); /引用子类的成员变量y class OverLay public static void main(String args) int width=30,height=10; Rectangle t
54、t=new Rectangle(); tt.y=height; /将height变量的值10赋给子类的成员变量y tt.measure(); /引用子类的measure()方法 ,this 与 super,this表示的是当前对象本身或者说是当前对象的一个引用。 Super表示当前对象的直接父类对象,是当前对象直接父类的引用。如A类派生出子类B,那么B类是A类的直接父类。,Java实例super和this的使用,class Employee String name; Employee(String name) =name; public void showInfo() Sys
55、tem.out.println(this is superClass call:+name); public void getInfo() showInfo(); class Manage extends Employee String name;/注意与父类同名的成员变量 String department; Manage(String n) super(n); ,Java实例(续),public void showInfo() super.showInfo(); /调用父类的方法 System.out.println(this is subClass call:+name); System
56、.out.println(department); public class CoverMethod public static void main(String args) Manage aa=new Manage(李四); =张三; aa.department=经理室; aa.getInfo(); ,构造方法的继承,子类可以继承父类的构造方法,构造方法的继承遵循的原则是: (1)子类无条件的继承父类不含参数的构造方法。 (2)如果子类没有构造方法,则它继承父类无参数的构造方法作为自己的构造方法;如果子类定义了构造方法,则在创建新对象时,先执行父类的无参构造方法,再执行自己的构
57、造方法 (3)对于父类中含有参数构造方法,子类可以在自己的构造方法中使用super调用它。,Java实例构造方法的继承,class Point protected int x, y; / coordinates of the Point public Point() /不带参数的构造方法 x=0; y=0; System.out.println( Point constructor: +this.toString() ); public Point(int a,int b) /带参数的构造方法 x=a; y=b; System.out.println( Point constructor: +
58、this.toString() ); public String toString() return +x+,+y+; ,Java实例(续),class Circle extends Point / Circle类继承Point类 protected double radius; public Circle() super(4,5); /引用父类带参数的构造方法 radius=10; System.out.println( Circle constructor: +this.toString() ); public String toString() return Center = +super.toString()+Radius=+radius; public class Test1 public static void main( String args ) Circle circle1=new Circle(); /*建Circle对象,首先执行父类Point类的无参数构造方法,然后执行子类Circle类的构造方法*/ ,类对象之间的类型转换,子类对象转换为父类对象时,可以用显式或隐式实现,即子类对象可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公共场所安全生产制度规范
- 办公管理制度及流程规范
- 村档案管理制度版
- 学校安全管理制度及规范
- 幼儿园档案人员考核制度
- 档案保管及交接制度
- 工程计价档案管理制度
- 灭火器维保车间制度规范
- 工会管理制度档案
- 建立教师业务档案制度
- 山东省济南市2025-2026年高三上第一次模拟考试历史+答案
- 初中九年级上一元二次方程计算练习题及答案详解B2
- 中国涉外律师人才研究报告2025
- 2026年生产管理岗入职性格测试题及答案
- 2026年bjt商务能力考试试题
- 老年住院患者非计划性拔管分析2026
- (2025)70周岁以上老年人换长久驾照三力测试题库(含参考答案)
- 2025年汽车驾驶员技师考试试题及答案含答案
- 观看煤矿警示教育片写心得体会
- 《2021节能保温规范大全》JGJ353-2017 焊接作业厂房供暖通风与空气调节设计规范
- 湿地保护法宣传解读课件
评论
0/150
提交评论