java程序设计03-编程基础课件_第1页
java程序设计03-编程基础课件_第2页
java程序设计03-编程基础课件_第3页
java程序设计03-编程基础课件_第4页
java程序设计03-编程基础课件_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java程序设计程序设计03-编程基础编程基础类类对象对象包包继承继承访问权限访问权限接口接口jar文档文档java程序设计程序设计03-编程基础编程基础深刻理解深刻理解OOPOOP中类和对象的概念中类和对象的概念会定义类、并会由类创建对象会定义类、并会由类创建对象深刻理解类的成员变量和成员方法深刻理解类的成员变量和成员方法理解包的概念、会使用包语句理解包的概念、会使用包语句深刻理解继承的概念、掌握深刻理解继承的概念、掌握JavaJava的继承方式的继承方式在掌握包和继承等概念的基础上,掌握访问权限问题在掌握包和继承等概念的基础上,掌握访问权限问题结合类掌握接口的概念、并会定义和使用接口结合类

2、掌握接口的概念、并会定义和使用接口会使用会使用jarjar工具将相关文件打成工具将相关文件打成jarjar文档并发布文档并发布java程序设计程序设计03-编程基础编程基础javajava程序设计程序设计03-03-编程基础编程基础一一类的概念类的概念类是组成类是组成JavaJava程序的基本单元程序的基本单元类是用来创建对象的模板(对象是类的实例)类是用来创建对象的模板(对象是类的实例)OOPOOP的三个基本特性:的三个基本特性:封装性:封装性:类封装了一类对象的状态(成员变量)类封装了一类对象的状态(成员变量)和功能(成员方法)和功能(成员方法)继承性:继承性:可在已有类的基础上进行扩展,

3、产生可在已有类的基础上进行扩展,产生子类,实现代码重用和功能的扩充子类,实现代码重用和功能的扩充多态性:多态性:方法的重载方法的重载( (静态静态) )和覆盖和覆盖( (动态动态) )JavaJava提供了大量的类供用户使用(提供了大量的类供用户使用(JFCJFC)面向对象程序设计的主要工作:面向对象程序设计的主要工作:了解已有类的基本情况了解已有类的基本情况扩展已有类建立自己的新类并创建有关对象扩展已有类建立自己的新类并创建有关对象1.1. 实现它们之间的交互完成系统目标实现它们之间的交互完成系统目标javajava程序设计程序设计03-03-编程基础编程基础一一类的声明类的声明格式格式 访

4、问修饰符访问修饰符 class ClassNameclass ClassName 成员变量声明;成员变量声明; 成员方法声明;成员方法声明; 说明说明访问修饰符可以是访问修饰符可以是publicpublic或或省略省略类名中每个词的首字母大写,做到见名知义类名中每个词的首字母大写,做到见名知义成员变量用来刻画类的属性(状态);成员变量用来刻画类的属性(状态);成员方法用来刻画类的功能;成员方法用来刻画类的功能;1.1.通过成员方法可使实现对成员变量的操作通过成员方法可使实现对成员变量的操作javajava程序设计程序设计03-03-编程基础编程基础举例举例( (Example0301_Circ

5、le.javaExample0301_Circle.java) )public class Example0301_Circlepublic class Example0301_Circle double r; double r; double s; double s; void setR(double r1) r = r1; void setR(double r1) r = r1; double getR() return r; double getR() return r; double getS() return 3.14 double getS() return 3.14 * * r

6、r * * r; r; 成成员员变变量量成成员员方方法法javajava程序设计程序设计03-03-编程基础编程基础一一变量变量变量的种类变量的种类实例成员变量(简称实例变量)实例成员变量(简称实例变量)类成员变量(简称类变量)类成员变量(简称类变量)局部变量局部变量 注意:在注意:在JavaJava类的定义中没有类的定义中没有全局变量全局变量的概念的概念变量的声明变量的声明实例变量实例变量:访问修饰符访问修饰符 类型名类型名 变量名;变量名; / private double r/ private double r; / int s/ int s;类变量类变量:访问修饰符访问修饰符 stat

7、ic static 类型名类型名 变量名;变量名; / public static int a/ public static int a;1.1.局部变量局部变量:类型名:类型名 变量名;变量名;/ double x/ double x;javajava程序设计程序设计03-03-编程基础编程基础说明说明一个类中不允许出现两个同名的成员变量一个类中不允许出现两个同名的成员变量类的成员变量可以和方法中的局部变量同名类的成员变量可以和方法中的局部变量同名一个方法中不允许出现两个同名的局部变量一个方法中不允许出现两个同名的局部变量public void f()public void f() int

8、x = 1;int x = 1;for (int i = 0; i 10; i+)for (int i = 0; i 10; i+) int x = 0; int x = 0; /error/error System.out.println(“i=“ + i); System.out.println(“i=“ + i); /error/error javajava程序设计程序设计03-03-编程基础编程基础变量的作用域变量的作用域实例成员变量和类成员变量在整个类中有效实例成员变量和类成员变量在整个类中有效局部变量只在定义它的复合语句中有效局部变量只在定义它的复合语句中有效当局部变量与成员变量重

9、名时,在局部变量的当局部变量与成员变量重名时,在局部变量的作用域内成员变量被隐藏,例如:作用域内成员变量被隐藏,例如:class Tomclass Tomint x = 98, y;int x = 98, y;void f1()void f1() int x = 3; y = x; int x = 3; y = x; /此处此处y=3y=3void f2()void f2() y = x; y = x; /此处此处y=98y=98 /尽量避免局部变量与成员变量重名尽量避免局部变量与成员变量重名javajava程序设计程序设计03-03-编程基础编程基础一一成员方法(简称方法)成员方法(简称方法

10、)方法的种类方法的种类实例方法实例方法类方法类方法/实例方法和类方法的区别在于声明时是否使实例方法和类方法的区别在于声明时是否使用了关键字用了关键字staticstatic,带有,带有staticstatic的是类方法的是类方法方法的声明方法的声明 访问修饰符访问修饰符 staticstatic 返回值类型返回值类型 方法名(形参表)方法名(形参表) 局部变量说明部分;局部变量说明部分;/不一定有不一定有语句部分;语句部分;/一般要有,以实现方法的功能一般要有,以实现方法的功能 javajava程序设计程序设计03-03-编程基础编程基础说明说明方法一般都使用方法一般都使用publicpubl

11、ic进行访问修饰进行访问修饰没有返回值的方法要用没有返回值的方法要用voidvoid类型修饰类型修饰一个方法可以没有形参表,但要保留一个方法可以没有形参表,但要保留()()例如:例如:public double getArea()public double getArea() double area;double area;area = ;area = ;return area;return area; javajava程序设计程序设计03-03-编程基础编程基础构造方法构造方法构造方法是构造方法是与类名同名且没有返回值与类名同名且没有返回值的一类特的一类特殊的殊的实例实例方法方法构造方法是构

12、造方法是在创建(在创建(newnew)对象时调用)对象时调用的的构造方法是构造方法是可以重载(可以有多个)可以重载(可以有多个)的的确定一个类中所拥有的构造方法:确定一个类中所拥有的构造方法:若存在显式定义的构造方法若存在显式定义的构造方法有几个就是几个有几个就是几个;否则否则只有一个只有一个默认的无参的构造方法默认的无参的构造方法javajava程序设计程序设计03-03-编程基础编程基础构造方法示例构造方法示例public class Circlepublic class Circle double r; double r; public Circle() r = 1.0; public

13、Circle() r = 1.0; public Circle(double rr) r = rr; public Circle(double rr) r = rr; / / 其他方法定义其他方法定义 思考问题:思考问题:该类中共有几个构造方法?该类中共有几个构造方法?若去掉构造方法若去掉构造方法后共有几个构造方法?后共有几个构造方法?若去掉构造方法若去掉构造方法后共有几个构造方法?后共有几个构造方法?若去掉构造方法若去掉构造方法和和后共有几个构造方法?后共有几个构造方法?/ / 默认的构造方法实现将成员变量初始化为默认值默认的构造方法实现将成员变量初始化为默认值javajava程序设计程序设

14、计03-03-编程基础编程基础方法的重载方法的重载方法重载是指一个类中可以有多个方法具有相方法重载是指一个类中可以有多个方法具有相同的名字,但它们的同的名字,但它们的参数必须不同参数必须不同(个数或类(个数或类型不同)型不同)如果两个方法的返回值类型不同,但参数相同,如果两个方法的返回值类型不同,但参数相同,这种情况下的重载是不允许的这种情况下的重载是不允许的重载可以实现同一个方法名的多种不同功能,重载可以实现同一个方法名的多种不同功能,体现了体现了静态多态性静态多态性例如:例如:public void f();public void f();public int f(int a);publi

15、c int f(int a);public double f(int a); public double f(int a); /error/errorpublic double f(double a);public double f(double a);javajava程序设计程序设计03-03-编程基础编程基础一一内部类内部类定义在某个类里面的类,称为定义在某个类里面的类,称为嵌入类嵌入类或或内部类内部类在下例中,在下例中,B B就是一个嵌入类就是一个嵌入类 public class Apublic class A class B class B 嵌入类可访问被嵌入类的变量和方法嵌入类可访问

16、被嵌入类的变量和方法嵌入类的字节码文件名为:嵌入类的字节码文件名为:A$B.classA$B.class嵌入类主要用于创建适配器类(一般匿名)嵌入类主要用于创建适配器类(一般匿名)在一个方法内部定义的类,称为在一个方法内部定义的类,称为局部内部类局部内部类其他类要想访问内部类时,可如下操作:其他类要想访问内部类时,可如下操作:A a = new A();A a = new A();1.1.A.B b = a.new B();A.B b = a.new B();java程序设计程序设计03-编程基础编程基础javajava程序设计程序设计03-03-编程基础编程基础一一对象的概念对象的概念1.1

17、.对象是对象是类的实例,它具有状态、行为和身份类的实例,它具有状态、行为和身份1.1.类相当于定义的一种数据类型(静态的)类相当于定义的一种数据类型(静态的)而对象就是该而对象就是该类型的一个变量(动态的)类型的一个变量(动态的)javajava程序设计程序设计03-03-编程基础编程基础对象的声明对象的声明格式:格式:访问修饰符访问修饰符 类名类名 对象名;对象名;例如:例如:Circle circle1, circle2; String s;javajava程序设计程序设计03-03-编程基础编程基础对象的创建对象的创建格式:格式:对象名对象名 = new 类的构造方法(实参表)类的构造方

18、法(实参表);例如:例如:circle1 = new Circle(); circle2 = new Circle(5.5); s = new String(“Hello!”);javajava程序设计程序设计03-03-编程基础编程基础一一对象的内存模型对象的内存模型一个声明后的对象变量用来存放对象的一个声明后的对象变量用来存放对象的引用引用在未获得分配的内存前,对象变量的值为在未获得分配的内存前,对象变量的值为nullnull为对象分配的内存空间,称为该对象的为对象分配的内存空间,称为该对象的实体实体在分配内存空间(在分配内存空间(newnew)后,对象变量中存放这)后,对象变量中存放这块

19、内存空间(实体)的引用(内存空间代表)块内存空间(实体)的引用(内存空间代表)1.1.一个对象变量的值会由于赋值而发生改变一个对象变量的值会由于赋值而发生改变javajava程序设计程序设计03-03-编程基础编程基础n变量的内存模型变量的内存模型类变量的内存类变量的内存是在类的字节码文件被加载到内存是在类的字节码文件被加载到内存时就分配的,且只分配一次,各对象共享,直到时就分配的,且只分配一次,各对象共享,直到程序退出时释放(所有对象只有一个内存映像)程序退出时释放(所有对象只有一个内存映像)实例变量的内存实例变量的内存在每次创建对象时分配,不同对在每次创建对象时分配,不同对象的实例变量所占

20、内存空间不同,当该对象不存象的实例变量所占内存空间不同,当该对象不存在时释放(每个对象都有一个内存映像)在时释放(每个对象都有一个内存映像)局部变量的内存局部变量的内存在定义该局部变量的复合语句被在定义该局部变量的复合语句被调用时分配,语句块执行完毕后释放调用时分配,语句块执行完毕后释放javajava程序设计程序设计03-03-编程基础编程基础一一方法的内存模型方法的内存模型类方法的内存类方法的内存是在类的字节码文件被加载到内存是在类的字节码文件被加载到内存时就分配的,且只分配一次,各对象共享,直到时就分配的,且只分配一次,各对象共享,直到程序退出时释放(只有一个内存映像)程序退出时释放(只

21、有一个内存映像)1.1.实例方法的内存实例方法的内存在第一次创建对象时分配,且只在第一次创建对象时分配,且只分配一次,各对象共享,当该类的所有对象都不分配一次,各对象共享,当该类的所有对象都不存在时释放(只有一个内存映像)存在时释放(只有一个内存映像)javajava程序设计程序设计03-03-编程基础编程基础一一实例考查实例考查 class Aclass A int x; int x; /实例变量实例变量 static int y; static int y; /类变量类变量 public float f(int x1,int x2) public float f(int x1,int x2

22、) /实例方法实例方法 public static float g(int a) public static float g(int a) /类方法类方法 javajava程序设计程序设计03-03-编程基础编程基础nullnulla1a2A0gy0 xCD010 xAB01nulla2f0 xCD260 xCD010 xCD260 xAB010 xAC02gfyx00 xA002a10 xA002g0 xCD01f0 xCD26y0 xAB01x00 xBC010 xA0C0A a1,a2;A a1,a2;na1 = new A();a1 = new A();na2 = a1;a2 = a1

23、;a2 = new A();a2 = new A();类类A的成员的成员x 实例变量实例变量y 类变量类变量f实例方法实例方法g 类方法类方法1.1.加载类加载类A A时,类变量时,类变量y y和类方法和类方法g g即被分配内存即被分配内存javajava程序设计程序设计03-03-编程基础编程基础一一对象的使用对象的使用访问变量访问变量格式:格式:对象名对象名. .变量名变量名对于类变量常用:对于类变量常用:类名类名. .变量名变量名访问方法访问方法格式:格式:对象名对象名. .方法名(实参表)方法名(实参表)1.1.对于类方法常用:对于类方法常用:类名类名. .方法名(实参表)方法名(实参

24、表)javajava程序设计程序设计03-03-编程基础编程基础说明说明类变量和类方法在不创建对象时就可以用类名类变量和类方法在不创建对象时就可以用类名进行访问进行访问类方法只能操作类变量,只能调用类方法类方法只能操作类变量,只能调用类方法实例方法对实例变量和类变量都能操作,实例方法对实例变量和类变量都能操作,对实例方法和类方法都能调用对实例方法和类方法都能调用参数的值传递参数的值传递复合的概念复合的概念对于一个类的成员变量来说,既可以是基本数对于一个类的成员变量来说,既可以是基本数据类型,也可以是引用数据类型据类型,也可以是引用数据类型如果是类类型的成员变量,即出现了复合如果是类类型的成员变

25、量,即出现了复合例子:例子: Example0302_Taper.javaExample0302_Taper.javajava程序设计程序设计03-编程基础编程基础javajava程序设计程序设计03-03-编程基础编程基础一一包的概念包的概念1.1.包包是有效管理类的一种机制,它是有效管理类的一种机制,它可将相关的类组可将相关的类组织在一起(类的集合)织在一起(类的集合)2.2.包的使用能够减少命名冲突问题,能够提供更多包的使用能够减少命名冲突问题,能够提供更多方面的保护方面的保护3.3.包是分层次的,即采用树形结构定义包是分层次的,即采用树形结构定义4.4.包是不嵌套的,没有任何一个包包含

26、另一个包包是不嵌套的,没有任何一个包包含另一个包5.5.JDKJDK中提供了大量的包供用户使用中提供了大量的包供用户使用javajava程序设计程序设计03-03-编程基础编程基础n包的声明包的声明格式:格式:package package 包名包名; ;说明说明packagepackage语句必须是源文件的语句必须是源文件的第一条语句第一条语句若源文件中无若源文件中无packagepackage语句,则是语句,则是无名包无名包包名可以仅是一个合法的标识符,也可以是以包名可以仅是一个合法的标识符,也可以是以“.”.”分割的若干个标识符的组合,分割的若干个标识符的组合,如:如:package m

27、yselfpackage myself; package XXX.YYY.ZZZpackage XXX.YYY.ZZZ;当声明了一个包时,要求目录结构中存在与包当声明了一个包时,要求目录结构中存在与包名对应的目录,名对应的目录,例如若有:例如若有:package tom.jiafeipackage tom.jiafei;则应存在:则应存在:.tomjiafei.tomjiafei例子:例子:Example0303_Package.javaExample0303_Package.javajavajava程序设计程序设计03-03-编程基础编程基础一一导入包中的类导入包中的类导入方法导入方法imp

28、ort java.util.Date;import java.util.Date;import java.awt.import java.awt.* *; ;注意:只有包中的公共类被导入注意:只有包中的公共类被导入说明说明系统自动引入系统自动引入java.langjava.lang包中的类包中的类当导入自定义包中的类时,可能需要更新当导入自定义包中的类时,可能需要更新classpathclasspath的值,以便系统能找到要导入的类的值,以便系统能找到要导入的类若导入的类中有重名时,会出现错误提示若导入的类中有重名时,会出现错误提示若不导入包中的类,就要使用类的全名,这样若不导入包中的类,就要

29、使用类的全名,这样很不方便,如:很不方便,如:java.awt.Font f=new java.awt.Font();java.awt.Font f=new java.awt.Font();1.1.导入多余的类,会增加编译时间,但不会增加导入多余的类,会增加编译时间,但不会增加运行时间运行时间javajava程序设计程序设计03-03-编程基础编程基础Java中常用的包中常用的包java.langjava.lang(由系统自动导入其中的类)(由系统自动导入其中的类)java.awtjava.awtjava.awt.eventjava.awt.eventjava.utiljava.utiljav

30、a.iojava.iojava.appletjava.appletjava.sqljava.sqljavax.swingjavax.swingjava程序设计程序设计03-编程基础编程基础javajava程序设计程序设计03-03-编程基础编程基础一一继承的概念继承的概念继承是继承是OOPOOP中实现代码重用的一种方式中实现代码重用的一种方式继承是一种从已有的类创建子类的机制继承是一种从已有的类创建子类的机制子类继承已有类的状态和行为,并可以扩充子类继承已有类的状态和行为,并可以扩充由继承而得到的类叫由继承而得到的类叫子类子类,被继承的类叫,被继承的类叫超类超类JavaJava中不支持多继承(

31、子类只能有一个超类)中不支持多继承(子类只能有一个超类)在在JavaJava类层次结构的顶端是类层次结构的顶端是ObjectObject类类1.1.在未指定超类的类定义中,其超类默认为在未指定超类的类定义中,其超类默认为ObjectObjectjavajava程序设计程序设计03-03-编程基础编程基础一一子类的创建子类的创建格式格式 访问修饰符访问修饰符 class class 子类名子类名 extends extends 超类名超类名 示例示例 import javax.swing.JApplet;import javax.swing.JApplet;public class MyClas

32、s public class MyClass extends JAppletextends JApplet javajava程序设计程序设计03-03-编程基础编程基础一一this关键字关键字thisthis是一个代表当前对象的特殊关键字是一个代表当前对象的特殊关键字thisthis只能用在实例方法中,不能出现在类方法中只能用在实例方法中,不能出现在类方法中thisthis的基本用法如下例所示:的基本用法如下例所示: class Aclass A int x; int x; A(int x) A(int x,int y) void f() A(int x) A(int x,int y) voi

33、d f() this.x = x;this.x = x; this(x);this(x); int x = 3; int x = 3; this.x += y; this.x += y; this.x = x + 5;this.x = x + 5; 区别于形参区别于形参 调用其它构造方法调用其它构造方法 区别于局部变量区别于局部变量注意:通过注意:通过thisthis调用构造方法时只能是第一条语句调用构造方法时只能是第一条语句javajava程序设计程序设计03-03-编程基础编程基础一一super关键字关键字supersuper是一个代表超类的特殊关键字是一个代表超类的特殊关键字supers

34、uper只能用在实例方法中,不能用在类方法中只能用在实例方法中,不能用在类方法中supersuper的基本用法如下例所示:的基本用法如下例所示: class A class B extends Aclass A class B extends A int x; int x; int x; int x; A(int x) B(int x,int y) A(int x) B(int x,int y) this.x = x; super(x); this.x = x; super(x);/去掉此句会出错去掉此句会出错 this.x = super.x + y; this.x = super.x +

35、y; 注意:通过注意:通过supersuper调用超类的构造方法时只能是第一条语调用超类的构造方法时只能是第一条语句;子类必须显示句;子类必须显示/ /隐式地调用超类的构造方法隐式地调用超类的构造方法javajava程序设计程序设计03-03-编程基础编程基础n上转型对象上转型对象由于继承性,可以把一个子类对象的引用放到一由于继承性,可以把一个子类对象的引用放到一个超类对象中。若个超类对象中。若A A是是B B的超类,则:的超类,则:B b = new B();B b = new B();A a = b;A a = b;这时称超类对象这时称超类对象a a为子类对象为子类对象b b的的上转型对象

36、上转型对象。但。但a a不能访问不能访问b b中新增加的变量和方法中新增加的变量和方法反过来赋值时要进行强制类型转换,两种情况反过来赋值时要进行强制类型转换,两种情况把上转型对象赋给子类对象,如把上转型对象赋给子类对象,如 b = (B)ab = (B)a;则则b b得到子类定义的所有变量和方法得到子类定义的所有变量和方法把未经过上转的超类对象赋给子类对象,如:把未经过上转的超类对象赋给子类对象,如:A aa = new A();A aa = new A();b = (B)aa;b = (B)aa; /这种赋值不能使用这种赋值不能使用当超类对象接收不同的子类对象时,对于被覆盖当超类对象接收不同

37、的子类对象时,对于被覆盖的方法的调用可能会体现出动态多态性的方法的调用可能会体现出动态多态性java程序设计程序设计03-编程基础编程基础javajava程序设计程序设计03-03-编程基础编程基础一一包的访问包的访问1.包的访问是没有控制的,根据需要导入即可包的访问是没有控制的,根据需要导入即可2.例如:例如:import java.io.*;javajava程序设计程序设计03-03-编程基础编程基础一一类的访问修饰符类的访问修饰符1.public:公共类,任何类都可以访问公共类,任何类都可以访问2.默认(省略):默认(省略):友好类,同一包中的类可访问友好类,同一包中的类可访问修饰符修饰

38、符同包同包不同包不同包publicYesYes默认默认YesNojavajava程序设计程序设计03-03-编程基础编程基础一一类的其它属性(跟在访问修饰符后面)类的其它属性(跟在访问修饰符后面)1.final:最终类,不能被其他类所继承最终类,不能被其他类所继承2.abstract:抽象类抽象类一般用于描述一般用于描述层次较高类层次较高类(提供行为模板)(提供行为模板)抽象类常含有抽象类常含有抽象方法抽象方法以描述应具有的功能以描述应具有的功能抽象方法只有说明,没有方法体抽象方法只有说明,没有方法体抽象类中也可以没有抽象方法抽象类中也可以没有抽象方法若一个类中含有抽象方法则该类必须为抽象类若

39、一个类中含有抽象方法则该类必须为抽象类抽象类的对象抽象类的对象不能用不能用new创建创建应用时需要继承抽象类而产生非抽象的子类,应用时需要继承抽象类而产生非抽象的子类,并且子类要实现其中所有的抽象方法;否则子并且子类要实现其中所有的抽象方法;否则子类也要声明为抽象的类也要声明为抽象的javajava程序设计程序设计03-03-编程基础编程基础一一成员变量和成员方法的访问修饰符成员变量和成员方法的访问修饰符1.public:公共的公共的2.protected:受保护的受保护的3.默认(省略):默认(省略):友好的友好的4.private:私有的私有的javajava程序设计程序设计03-03-编

40、程基础编程基础一一子类继承超类成员的规则子类继承超类成员的规则修饰符修饰符同一包中同一包中不同包中不同包中publicYesYesprotectedYesYes默认默认YesNoprivateNoNojavajava程序设计程序设计03-03-编程基础编程基础若子类的成员变量与超类中的若子类的成员变量与超类中的同名同名,则该变量不,则该变量不是从超类继承来的,而属于子类中新定义的是从超类继承来的,而属于子类中新定义的class A class B extends Aclass A class B extends A int x; int x; int x; int x;A(int x) B(i

41、nt x,int y)A(int x) B(int x,int y) super(x); super(x); this.x = x; this.x = 5; this.x = x; this.x = 5; this.x += super.x + y; this.x += super.x + y; class C class C public static void main(String args) public static void main(String args) A a = new A(1); A a = new A(1); B b = new B(3,3); B b = new B

42、(3,3); 请思考去掉请思考去掉B中的中的 int x; 语句时的情况语句时的情况javajava程序设计程序设计03-03-编程基础编程基础若子类的方法与超类中的若子类的方法与超类中的相同相同,则称为子类覆盖,则称为子类覆盖了超类中的该方法(动态多态性)了超类中的该方法(动态多态性)子类重写超类中的方法时,不能降低访问权限。子类重写超类中的方法时,不能降低访问权限。高低顺序:高低顺序:publicpublic,protectedprotected,默认,默认,privateprivate当超类中的一个方法未被子类重写时,则子类继当超类中的一个方法未被子类重写时,则子类继承了该方法,其行为与

43、超类中的相同承了该方法,其行为与超类中的相同当某个对象调用一个方法时,它实际上是沿着继当某个对象调用一个方法时,它实际上是沿着继承的层次逐层向上查找该方法的定义的承的层次逐层向上查找该方法的定义的构造方法是构造方法是不可以继承不可以继承的的子类的每个构造方法都子类的每个构造方法都必须在一开始调用父类的必须在一开始调用父类的某一个构造方法某一个构造方法;若子类的构造方法;若子类的构造方法未显式调用未显式调用父类的构造方法,则系统默认父类的构造方法,则系统默认调用的是父类的无调用的是父类的无参构造方法参构造方法,此时如果父类中不存在无参的构造,此时如果父类中不存在无参的构造方法,就会出错方法,就会

44、出错javajava程序设计程序设计03-03-编程基础编程基础一一成员变量和成员方法的访问权限成员变量和成员方法的访问权限修饰符修饰符同一包中同一包中不同包中不同包中同一类中同一类中不同类中不同类中子类中子类中非子类中非子类中publicYesYesYesYesprotectedYesYesYesNo默认默认YesYesNoNoprivateYesNoNoNojavajava程序设计程序设计03-03-编程基础编程基础一一成员变量的其它属性成员变量的其它属性1.static:用于定义类成员变量用于定义类成员变量2.final:相当于定义常量,只能初始化一次,以后相当于定义常量,只能初始化一次

45、,以后其值不能被修改其值不能被修改javajava程序设计程序设计03-03-编程基础编程基础一一成员方法的其它属性成员方法的其它属性1.static:用于定义类成员方法用于定义类成员方法2.final:此种方法在子类中不能被覆盖此种方法在子类中不能被覆盖3.abstract:此种方法不能含有方法体,且包含此种此种方法不能含有方法体,且包含此种方法的类必须声明为抽象类方法的类必须声明为抽象类4.synchronized:用于线程同步访问用于线程同步访问javajava程序设计程序设计03-03-编程基础编程基础一一例子:例子:Example0304_Inheritance.javaExampl

46、e0304_Inheritance.javajava程序设计程序设计03-编程基础编程基础javajava程序设计程序设计03-03-编程基础编程基础一一接口的概念接口的概念接口接口提供了其他类要实现的一个行为模板提供了其他类要实现的一个行为模板与抽象类不同的是:使用相同接口的类不一定要与抽象类不同的是:使用相同接口的类不一定要有继承关系有继承关系接口中成员变量默认都是接口中成员变量默认都是public static finalpublic static final接口中所有方法都是接口中所有方法都是只声明不实现只声明不实现1.1.接口中方法默认都是接口中方法默认都是public abstra

47、ctpublic abstractjavajava程序设计程序设计03-03-编程基础编程基础n接口的声明接口的声明格式格式访问修饰符访问修饰符 interface interface 接口名接口名 常量声明;常量声明; 方法声明;方法声明; 访问修饰符可以是访问修饰符可以是publicpublic或默认(省略),其含或默认(省略),其含义和规定与声明类相同义和规定与声明类相同示例示例public interface ShapeAreapublic interface ShapeArea public static finalpublic static final int TYPE = 1 i

48、nt TYPE = 1;public abstractpublic abstract double getArea(); double getArea(); javajava程序设计程序设计03-03-编程基础编程基础n接口的使用接口的使用格式格式访问修饰符访问修饰符 class class 类名类名 implements implements 接口名列表接口名列表 说明说明若一个类使用了某接口,它必须实现该接口中若一个类使用了某接口,它必须实现该接口中声明的所有方法,并用声明的所有方法,并用publicpublic修饰修饰若一个类使用了某个接口,但没有实现该接口若一个类使用了某个接口,但没有

49、实现该接口中的所有方法,该类必须是中的所有方法,该类必须是abstractabstract类类不能用不能用newnew实例化一个接口,但可以声明接口实例化一个接口,但可以声明接口变量,并可以接收实现该接口的类对象变量,并可以接收实现该接口的类对象接口也可以使用接口也可以使用extendsextends关键字进行扩展关键字进行扩展javajava程序设计程序设计03-03-编程基础编程基础一一接口回调接口回调接口回调是指可以把实现某一接口的类所创建的接口回调是指可以把实现某一接口的类所创建的对象的引用赋给用该接口声明的接口变量,则该对象的引用赋给用该接口声明的接口变量,则该接口变量就可调用被类实

50、现的接口中的方法接口变量就可调用被类实现的接口中的方法在需要的时候也可以强制把一个接口变量再转换在需要的时候也可以强制把一个接口变量再转换为实现该接口的一个类对象为实现该接口的一个类对象1.1.接口回调也体现了动态多态性接口回调也体现了动态多态性javajava程序设计程序设计03-03-编程基础编程基础例子例子 Example0305_Interface.javaExample0305_Interface.javajava程序设计程序设计03-编程基础编程基础javajava程序设计程序设计03-03-编程基础编程基础一一Jar文档的概念文档的概念1.1.jarjar文件是一种将相关文件组织

51、在一起,并且进文件是一种将相关文件组织在一起,并且进行了压缩的文件格式,扩展名为行了压缩的文件格式,扩展名为.jar.jar2.2.使用使用jarjar文档可以用来发布应用程序文档可以用来发布应用程序javajava程序设计程序设计03-03-编程基础编程基础n生成生成JarJar文档文档1.1.使用使用JDKJDK提供的提供的 jar.exejar.exe 命令命令2.2.格式:格式:jar cvf jar cvf 压缩后的文档名压缩后的文档名 被压缩的文件被压缩的文件javajava程序设计程序设计03-03-编程基础编程基础n解压解压JarJar文档文档1.1.格式:格式:jar xvf jar xvf 压缩后的文档名压缩后的文档名2.2.也可使用其它的解压软件,如也可使用其它的解压软件,如 WinRARWinRAR 等等javajava程序设计程序设计03-03-编程基础编程基础n执行执行JarJar文档文档1.1.设置主类设置主类在压缩后的在压缩后的jarjar文档中,有一个文档中,有一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论