java程序设计03-编程基础.ppt

上传人:小飞机 文档编号:6509957 上传时间:2023-11-07 格式:PPT 页数:64 大小:300.99KB
返回 下载 相关 举报
java程序设计03-编程基础.ppt_第1页
第1页 / 共64页
java程序设计03-编程基础.ppt_第2页
第2页 / 共64页
java程序设计03-编程基础.ppt_第3页
第3页 / 共64页
java程序设计03-编程基础.ppt_第4页
第4页 / 共64页
java程序设计03-编程基础.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《java程序设计03-编程基础.ppt》由会员分享,可在线阅读,更多相关《java程序设计03-编程基础.ppt(64页珍藏版)》请在三一办公上搜索。

1、03 编程基础,类对象包继承访问权限接口jar文档,本章基本要求,深刻理解OOP中类和对象的概念会定义类、并会由类创建对象深刻理解类的成员变量和成员方法理解包的概念、会使用包语句深刻理解继承的概念、掌握Java的继承方式在掌握包和继承等概念的基础上,掌握访问权限问题结合类掌握接口的概念、并会定义和使用接口会使用jar工具将相关文件打成jar文档并发布,类,济南大学 信息科学与工程学院 2006,类的概念类是组成Java程序的基本单元类是用来创建对象的模板(对象是类的实例)OOP的三个基本特性:封装性:类封装了一类对象的状态(成员变量)和功能(成员方法)继承性:可在已有类的基础上进行扩展,产生子

2、类,实现代码重用和功能的扩充多态性:方法的重载(静态)和覆盖(动态)Java提供了大量的类供用户使用(JFC)面向对象程序设计的主要工作:了解已有类的基本情况扩展已有类建立自己的新类并创建有关对象实现它们之间的交互完成系统目标,济南大学 信息科学与工程学院 2006,类的声明格式 访问修饰符 class ClassName 成员变量声明;成员方法声明;说明访问修饰符可以是public或省略类名中每个词的首字母大写,做到见名知义成员变量用来刻画类的属性(状态);成员方法用来刻画类的功能;通过成员方法可使实现对成员变量的操作,济南大学 信息科学与工程学院 2006,举例(Example0301_C

3、ircle.java)public class Example0301_Circle double r;double s;void setR(double r1)r=r1;double getR()return r;double getS()return 3.14*r*r;,r=5.5;,/此处的语句是非法的,Why?,济南大学 信息科学与工程学院 2006,变量变量的种类实例成员变量(简称实例变量)类成员变量(简称类变量)局部变量 注意:在Java类的定义中没有全局变量的概念变量的声明实例变量:访问修饰符 类型名 变量名;/private double r;/int s;类变量:访问修饰符

4、static 类型名 变量名;/public static int a;局部变量:类型名 变量名;/double x;,济南大学 信息科学与工程学院 2006,说明一个类中不允许出现两个同名的成员变量类的成员变量可以和方法中的局部变量同名一个方法中不允许出现两个同名的局部变量public void f()int x=1;for(int i=0;i 10;i+)int x=0;/errorSystem.out.println(“i=“+i);/error,济南大学 信息科学与工程学院 2006,变量的作用域实例成员变量和类成员变量在整个类中有效局部变量只在定义它的复合语句中有效当局部变量与成员变

5、量重名时,在局部变量的作用域内成员变量被隐藏,例如:class Tomint x=98,y;void f1()int x=3;y=x;/此处y=3void f2()y=x;/此处y=98/尽量避免局部变量与成员变量重名,济南大学 信息科学与工程学院 2006,成员方法(简称方法)方法的种类实例方法类方法/实例方法和类方法的区别在于声明时是否使用了关键字static,带有static的是类方法方法的声明 访问修饰符 static 返回值类型 方法名(形参表)局部变量说明部分;/不一定有语句部分;/一般要有,以实现方法的功能,济南大学 信息科学与工程学院 2006,说明方法一般都使用public进

6、行访问修饰没有返回值的方法要用void类型修饰一个方法可以没有形参表,但要保留()例如:public double getArea()double area;area=;return area;,济南大学 信息科学与工程学院 2006,构造方法构造方法是与类名同名且没有返回值的一类特殊的实例方法构造方法是在创建(new)对象时调用的构造方法是可以重载(可以有多个)的确定一个类中所拥有的构造方法:若存在显式定义的构造方法有几个就是几个;否则只有一个默认的无参的构造方法,济南大学 信息科学与工程学院 2006,构造方法示例public class Circle double r;public Ci

7、rcle()r=1.0;public Circle(double rr)r=rr;/其他方法定义思考问题:该类中共有几个构造方法?若去掉构造方法后共有几个构造方法?若去掉构造方法后共有几个构造方法?若去掉构造方法和后共有几个构造方法?/默认的构造方法实现将成员变量初始化为默认值,济南大学 信息科学与工程学院 2006,方法的重载方法重载是指一个类中可以有多个方法具有相同的名字,但它们的参数必须不同(个数或类型不同)如果两个方法的返回值类型不同,但参数相同,这种情况下的重载是不允许的重载可以实现同一个方法名的多种不同功能,体现了静态多态性例如:public void f();public int

8、 f(int a);public double f(int a);/errorpublic double f(double a);,济南大学 信息科学与工程学院 2006,内部类定义在某个类里面的类,称为嵌入类或内部类在下例中,B就是一个嵌入类 public class A class B 嵌入类可访问被嵌入类的变量和方法嵌入类的字节码文件名为:A$B.class嵌入类主要用于创建适配器类(一般匿名)在一个方法内部定义的类,称为局部内部类其他类要想访问内部类时,可如下操作:A a=new A();A.B b=a.new B();,对象,济南大学 信息科学与工程学院 2006,对象的概念对象是类

9、的实例,它具有状态、行为和身份类相当于定义的一种数据类型(静态的)而对象就是该类型的一个变量(动态的),济南大学 信息科学与工程学院 2006,对象的声明格式:访问修饰符 类名 对象名;例如:Circle circle1,circle2;String s;,济南大学 信息科学与工程学院 2006,对象的创建格式:对象名=new 类的构造方法(实参表);例如:circle1=new Circle();circle2=new Circle(5.5);s=new String(“Hello!”);,济南大学 信息科学与工程学院 2006,对象的内存模型一个声明后的对象变量用来存放对象的引用在未获得分

10、配的内存前,对象变量的值为null为对象分配的内存空间,称为该对象的实体在分配内存空间(new)后,对象变量中存放这块内存空间(实体)的引用(内存空间代表)一个对象变量的值会由于赋值而发生改变,济南大学 信息科学与工程学院 2006,变量的内存模型类变量的内存是在类的字节码文件被加载到内存时就分配的,且只分配一次,各对象共享,直到程序退出时释放(所有对象只有一个内存映像)实例变量的内存在每次创建对象时分配,不同对象的实例变量所占内存空间不同,当该对象不存在时释放(每个对象都有一个内存映像)局部变量的内存在定义该局部变量的复合语句被调用时分配,语句块执行完毕后释放,济南大学 信息科学与工程学院

11、2006,方法的内存模型类方法的内存是在类的字节码文件被加载到内存时就分配的,且只分配一次,各对象共享,直到程序退出时释放(只有一个内存映像)实例方法的内存在第一次创建对象时分配,且只分配一次,各对象共享,当该类的所有对象都不存在时释放(只有一个内存映像),济南大学 信息科学与工程学院 2006,实例考查 class A int x;/实例变量 static int y;/类变量 public float f(int x1,int x2)/实例方法 public static float g(int a)/类方法,济南大学 信息科学与工程学院 2006,A a1,a2;,a1=new A();

12、,a2=a1;,a2=new A();,加载类A时,类变量y和类方法g即被分配内存,济南大学 信息科学与工程学院 2006,对象的使用访问变量格式:对象名.变量名对于类变量常用:类名.变量名访问方法格式:对象名.方法名(实参表)对于类方法常用:类名.方法名(实参表),济南大学 信息科学与工程学院 2006,说明类变量和类方法在不创建对象时就可以用类名进行访问类方法只能操作类变量,只能调用类方法实例方法对实例变量和类变量都能操作,对实例方法和类方法都能调用参数的值传递基本数据类型和引用数据类型都是值传递值传递的本质在于系统为实参和形参分配不同的内存单元复合的概念对于一个类的成员变量来说,既可以是

13、基本数据类型,也可以是引用数据类型如果是类类型的成员变量,即出现了复合例子:Example0302_Taper.java,包,济南大学 信息科学与工程学院 2006,包的概念包是有效管理类的一种机制,它可将相关的类组织在一起(类的集合)包的使用能够减少命名冲突问题,能够提供更多方面的保护包是分层次的,即采用树形结构定义包是不嵌套的,没有任何一个包包含另一个包JDK中提供了大量的包供用户使用,济南大学 信息科学与工程学院 2006,包的声明格式:package 包名;说明package语句必须是源文件的第一条语句若源文件中无package语句,则是无名包包名可以仅是一个合法的标识符,也可以是以“

14、.”分割的若干个标识符的组合,如:package myself;当声明了一个包时,要求目录结构中存在与包名对应的目录,例如若有:package tom.jiafei;则应存在:.tomjiafei例子:Example0303_Package.java,济南大学 信息科学与工程学院 2006,导入包中的类导入方法import;import java.awt.*;注意:只有包中的公共类被导入说明系统自动引入java.lang包中的类当导入自定义包中的类时,可能需要更新classpath的值,以便系统能找到要导入的类若导入的类中有重名时,会出现错误提示若不导入包中的类,就要使用类的全名,这样很不方便

15、,如:f=new();导入多余的类,会增加编译时间,但不会增加运行时间,济南大学 信息科学与工程学院 2006,Java中常用的包java.lang(由系统自动导入其中的类)java.appletjava.sqljavax.swing,继承,济南大学 信息科学与工程学院 2006,继承的概念继承是OOP中实现代码重用的一种方式继承是一种从已有的类创建子类的机制子类继承已有类的状态和行为,并可以扩充由继承而得到的类叫子类,被继承的类叫超类Java中不支持多继承(子类只能有一个超类)在Java类层次结构的顶端是Object类在未指定超类的类定义中,其超类默认为Object,济南大学 信息科学与工程

16、学院 2006,子类的创建格式 访问修饰符 class 子类名 extends 超类名 示例 import;public class MyClass extends JApplet,济南大学 信息科学与工程学院 2006,this关键字this是一个代表当前对象的特殊关键字this只能用在实例方法中,不能出现在类方法中this的基本用法如下例所示:class A int x;A(int x)A(int x,int y)void f()this.x=x;this(x);int x=3;this.x+=y;this.x=x+5;区别于形参 调用其它构造方法 区别于局部变量注意:通过this调用构造

17、方法时只能是第一条语句,济南大学 信息科学与工程学院 2006,super关键字super是一个代表超类的特殊关键字super只能用在实例方法中,不能用在类方法中super的基本用法如下例所示:class A class B extends A int x;int x;A(int x)B(int x,int y)this.x=x;super(x);/去掉此句会出错 this.x=super.x+y;注意:通过super调用超类的构造方法时只能是第一条语句;子类必须显示/隐式地调用超类的构造方法,济南大学 信息科学与工程学院 2006,上转型对象由于继承性,可以把一个子类对象的引用放到一个超类对

18、象中。若A是B的超类,则:B b=new B();A a=b;这时称超类对象a为子类对象b的上转型对象。但a不能访问b中新增加的变量和方法反过来赋值时要进行强制类型转换,两种情况把上转型对象赋给子类对象,如 b=(B)a;则b得到子类定义的所有变量和方法把未经过上转的超类对象赋给子类对象,如:A aa=new A();b=(B)aa;/这种赋值不能使用当超类对象接收不同的子类对象时,对于被覆盖的方法的调用可能会体现出动态多态性,访问权限,济南大学 信息科学与工程学院 2006,包的访问包的访问是没有控制的,根据需要导入即可例如:import java.io.*;,济南大学 信息科学与工程学院

19、2006,类的访问修饰符public:公共类,任何类都可以访问默认(省略):友好类,同一包中的类可访问,济南大学 信息科学与工程学院 2006,类的其它属性(跟在访问修饰符后面)final:最终类,不能被其他类所继承abstract:抽象类一般用于描述层次较高类(提供行为模板)抽象类常含有抽象方法以描述应具有的功能抽象方法只有说明,没有方法体抽象类中也可以没有抽象方法若一个类中含有抽象方法则该类必须为抽象类抽象类的对象不能用new创建应用时需要继承抽象类而产生非抽象的子类,并且子类要实现其中所有的抽象方法;否则子类也要声明为抽象的,济南大学 信息科学与工程学院 2006,成员变量和成员方法的访

20、问修饰符public:公共的protected:受保护的默认(省略):友好的private:私有的,济南大学 信息科学与工程学院 2006,子类继承超类成员的规则,济南大学 信息科学与工程学院 2006,若子类的成员变量与超类中的同名,则该变量不是从超类继承来的,而属于子类中新定义的class A class B extends A int x;int x;A(int x)B(int x,int y)super(x);this.x=x;this.x=5;this.x+=super.x+y;class C public static void main(String args)A a=new A

21、(1);B b=new B(3,3);,请思考去掉B中的 int x;语句时的情况,济南大学 信息科学与工程学院 2006,若子类的方法与超类中的相同,则称为子类覆盖了超类中的该方法(动态多态性)子类重写超类中的方法时,不能降低访问权限。高低顺序:public,protected,默认,private当超类中的一个方法未被子类重写时,则子类继承了该方法,其行为与超类中的相同当某个对象调用一个方法时,它实际上是沿着继承的层次逐层向上查找该方法的定义的构造方法是不可以继承的子类的每个构造方法都必须在一开始调用父类的某一个构造方法;若子类的构造方法未显式调用父类的构造方法,则系统默认调用的是父类的无

22、参构造方法,此时如果父类中不存在无参的构造方法,就会出错,济南大学 信息科学与工程学院 2006,成员变量和成员方法的访问权限,济南大学 信息科学与工程学院 2006,成员变量的其它属性static:用于定义类成员变量final:相当于定义常量,只能初始化一次,以后其值不能被修改,济南大学 信息科学与工程学院 2006,成员方法的其它属性static:用于定义类成员方法final:此种方法在子类中不能被覆盖abstract:此种方法不能含有方法体,且包含此种方法的类必须声明为抽象类synchronized:用于线程同步访问,济南大学 信息科学与工程学院 2006,例子:Example0304_

23、Inheritance.java,接口,济南大学 信息科学与工程学院 2006,接口的概念接口提供了其他类要实现的一个行为模板与抽象类不同的是:使用相同接口的类不一定要有继承关系接口中成员变量默认都是public static final接口中所有方法都是只声明不实现接口中方法默认都是public abstract,济南大学 信息科学与工程学院 2006,接口的声明格式访问修饰符 interface 接口名 常量声明;方法声明;访问修饰符可以是public或默认(省略),其含义和规定与声明类相同示例public interface ShapeAreapublic static final in

24、t TYPE=1;public abstract double getArea();,济南大学 信息科学与工程学院 2006,接口的使用格式访问修饰符 class 类名 implements 接口名列表 说明若一个类使用了某接口,它必须实现该接口中声明的所有方法,并用public修饰若一个类使用了某个接口,但没有实现该接口中的所有方法,该类必须是abstract类不能用new实例化一个接口,但可以声明接口变量,并可以接收实现该接口的类对象接口也可以使用extends关键字进行扩展,济南大学 信息科学与工程学院 2006,接口回调接口回调是指可以把实现某一接口的类所创建的对象的引用赋给用该接口声

25、明的接口变量,则该接口变量就可调用被类实现的接口中的方法在需要的时候也可以强制把一个接口变量再转换为实现该接口的一个类对象接口回调也体现了动态多态性,济南大学 信息科学与工程学院 2006,例子 Example0305_Interface.java,Jar文档,济南大学 信息科学与工程学院 2006,Jar文档的概念jar文件是一种将相关文件组织在一起,并且进行了压缩的文件格式,扩展名为.jar使用jar文档可以用来发布应用程序,济南大学 信息科学与工程学院 2006,生成Jar文档使用JDK提供的 jar.exe 命令格式:jar cvf 压缩后的文档名 被压缩的文件,济南大学 信息科学与工

26、程学院 2006,解压Jar文档格式:jar xvf 压缩后的文档名也可使用其它的解压软件,如 WinRAR 等,济南大学 信息科学与工程学院 2006,执行Jar文档设置主类在压缩后的jar文档中,有一个META-INF目录,其中有一个文件MANIFEST.MF编辑该文件,加入下列一行文本:Main-Class:XXX/XXX是主类名,不带.class扩展名执行java-jar 压缩后的文档名当建立了打开jar文档的程序链接时,双击该文件也可以执行,本章问题小结,OOP的3个基本特性是什么?如何声明一个类?Java中的变量有几种类型?如何区别?Java中的方法有几种类型?如何区别?你对构造方

27、法理解得如何了?方法重载要满足什么条件?String s1=new String(“Hello!”);三种类型的变量,其内存实体何时分配?两种类型的方法,其内存实体何时分配?类方法只能访问类变量和类方法,对吗?,实例方法是否可访问所有成员变量和成员方法?如何理解“值传递”的实质?使用package时有何要求?包如何命名?如何将需要的类导入自己的程序中?什么包中的公共类会被系统自动导入?extends的作用是什么?如何使用?你理解this和super两个关键字的含义了吗?什么是“上转型对象”,作用何在?当需要导入本包以外的类时,有何限制?public类和友好类对外的访问权限如何?final类和a

28、bstract类各有何特点?类的成员有哪 4 种从高到低的访问修饰符?,子类如何继承超类中的成员?可降低访问权限吗?子类可继承超类的构造方法吗?子类的构造方法都必须调用超类的构造方法吗?静态多态性和动态多态性如何体现?有何区别?类的 4 种成员对外的访问权限如何?static、final、abstract、synchronized各有何用处?接口有何作用?如何定义?接口可以继承吗?接口中变量和方法的访问权限有何规定?一个类如何声明实现若干个接口?何谓接口回调?有何作用?何为jar文档?如何生成?如何设主类?如何执行?,济南大学 信息科学与工程学院 2006,作业,类的三个基本特性是什么?说明包、类、类成员、接口的访问权限。子类如何继承超类的内容?如何发布应用程序?,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号