Java2简明教程] 教学课件 ppt 作者 Java2-4

上传人:E**** 文档编号:89355195 上传时间:2019-05-23 格式:PPT 页数:93 大小:135KB
返回 下载 相关 举报
Java2简明教程] 教学课件 ppt 作者 Java2-4_第1页
第1页 / 共93页
Java2简明教程] 教学课件 ppt 作者 Java2-4_第2页
第2页 / 共93页
Java2简明教程] 教学课件 ppt 作者 Java2-4_第3页
第3页 / 共93页
Java2简明教程] 教学课件 ppt 作者 Java2-4_第4页
第4页 / 共93页
Java2简明教程] 教学课件 ppt 作者 Java2-4_第5页
第5页 / 共93页
点击查看更多>>
资源描述

《Java2简明教程] 教学课件 ppt 作者 Java2-4》由会员分享,可在线阅读,更多相关《Java2简明教程] 教学课件 ppt 作者 Java2-4(93页珍藏版)》请在金锄头文库上搜索。

1、第4章 Java的类,2,本章主要讲述的内容,类的定义和使用; 方法的定义和使用; 实例变量和局部变量; 构造函数; 方法的覆盖和重载; 关键字this的用法;,继承的概念和应用; 组合与继承; 抽象方法和抽象类; 对象类型转换; 访问权限限制符:public、private、protected。,3,4.1 类与对象,在Java程序中,除原子类型的变量以外都是对象,连Java程序本身也不例外。 类是面向对象程序设计的基础,OO始终是围绕着对象的封装性、继承性和多态性展开讨论的。,4,4.1.1 类与对象的区别,类是一个抽象的概念,对象是一个具体的概念。 类是在一组对象的基础上,通过抽象和概括

2、获得的一个概念。 对象是由数据和方法紧密结合的一个封装体,具有信息隐藏的能力。 对象可以通过方法(函数)与其它对象进行通信,但并不知道这些方法的实现细节。,5,4.1.2 Java和C编程思想的区别,C是结构化的编程语言,以函数为编程单元,程序员把注意力集中在编写函数上。 Java是面向对象的编程语言,以类为编程单元,程序员的精力集中在对类的设计上。 对象将实例变量(instance variable)和对数据的操作(即方法)约束在一起,类似一个独立的程序,易于扩充,易于维护,代码可复用。,6,4.1.3 如何定义类,类是对象的模板,它定义了对象的结构和操作数据的方法。定义格式如下:,clas

3、s className extends superClassName type instance-vairbale1; return-type methodName1( parameter-list) method-body; ,7,4.1.3 如何定义类(续),系统类Object是整个类层次结构中的根。 类内定义的变量称为实例变量,函数称为方法; Java将类的定义和类的实现放在一起,便于系统维护。例如:,8,4.1.3 如何定义类(续),class point / Object类的子类 int x , y; void init(int a, int b ) x=a; y=b; ,9,4.1

4、.4 对象和引用,对象是客观存在的变量,对象的引用就是对象的名字,例如:point p1; 创建对象:p1=new point( ); 一个对象可以有多个别名 ; 将一个变量设置为null,表明该变量不代表任何对象 : p1 = null ; 每个对象都有自己的变量,改变一个对象的实例变量并不影响到另外一个对象。例如:,class point / 程序4-1 int x , y; void init(int a, int b ) x=a; y=b; public class twoPoint public static void main(String args) point p1= new

5、point ( ), p2= new point ( ); p1.x=10; p1.y=20; p2.x=30; p2.y=40; System.out.println(“x = “+ p1.x +“ y= “+p1.y); System.out.println(“x = “+ p2.x +“ y= “+p2.y); ,11,4.2 方法,方法是一个功能模块 ,类似C中的函数; 方法和实例变量都必须定义在类内,方法是类的功能接口 ; 定义方法的原则:方法应当只执行单一的任务,并且方法名能有效地表达该任务; 方法的返回值类型、方法名和参数表共同称之为方法的特征。,12,4.2 方法(续),调用方

6、法的格式:引用. 方法名(参数表);,例如: point p1=new point( ),p2=new point( ); p1.init(10,20); /仅对p1对象的x和y进行赋值,13,4.3 实例变量和局部变量,Java中的变量分为两种:类内定义的实例变量,方法中定义的局部变量。 在同一个作用域内,不允许定义两个同名的局部变量。 局部变量可以掩盖实例变量。,class loc / 程序4-2 int x=1; / 实例变量 void printLocVar( ) int x=25; / 局部变量 System.out.println(“n x is :“+x); +x; System

7、.out.println(“ x is :“+x); void printInstanceVar( ) System.out.println(“n x is :“+x); x*=10; System.out.println(x is :“+x); ,public class testInstanceVar / 程序的主类 public static void main(String args ) loc obj=new loc( ); int x=5; / 局部变量 x System.out.println(“ x is :“+x); obj.printLocVar( ); obj.print

8、InstanceVar( ); System.out.println(“ x is :“+x); ,16,4.3 实例变量和局部变量(续),实例变量属于对象,它描述了对象的属性,随着对象的存在而存在; 局部变量是随着方法的调用而存在,一旦方法调用结束,局部变量也就消亡了。,17,4.4 构造函数,构造函数的功能是在创建对象时初始化对象的实例变量; 构造函数与类具有相同的名字; 构造函数没有返回值; 如果类中没有定义构造函数,编译器会自动创建一个缺省的、不带参数的构造函数。 构造函数是在对象创建之后,new操作完成前被调用的。,class point / 程序4-3 int x, y; poin

9、t(int a, int b) x=a; y=b; public class createPoint public static void main(String args ) point p= new point(10,20); System.out.println(p.x +“ “+p.y); ,思考:无构造函数怎么办?,19,4.5 方法重载,方法重载是在一个类中定义二个或多个同名的方法,但方法的参数个数或类型不完全相同;例如:,class point int x, y; point(int a, int b) x=a; y=b; point( ) x=-1; y=-1; ,20,注意以

10、下两点,一旦定义了构造函数,Java就不能再调用系统缺省构造函数; 方法重载的一个误区是靠返回值区别重载,即定义多个方法,它们的名称和形参类型完全相同,但返回值不同,这是不允许的。,21,4.6 关键字this,this指代对象 ,例如:,class IntVector / 程序4-6 int v ; boolean equals(IntVector other) if (this = other) return true; return false; class testIntVector public static void main(String args ) IntVector t1=

11、new IntVector( ), t3=new IntVector( ), t2=t1; System.out.println(t1.equals(t2); System.out.println(t3.equals(t2); ,23,4.6 关键字this(续),this指代对象可以用于解决实例变量被局部变量屏蔽的问题。 例如:,class point int x , y; void init(int x, int y ) this.x=x; this.y=y; ,24,4.6 关键字this (续),Java中的级连调用,仍是指代当前对象的this。例如:,/ 程序4-7 import j

12、ava.awt.*; import java.applet.*; class time private int hour, min, sec; time( ) setHour(0); setMin(0); setSec(0); time setHour(int h) hour=(h=0 ,time setMin(int m) min=(m=0 ,public class timeToString extends Applet private time t; public void init( ) t=new time( ); public void paint(Graphics g) t.se

13、tHour(18).setMin(30).setSec(20); g.drawString(“ time:“+t.tostring( ),25,45); ,28,4.6 关键字this (续),在构造函数内部使用this,它用于指代另外一个构造函数,但不能指代非构造函数。例如:,class point int x, y; point( ) this(-1,-1); point(int a, int b) x=a; y=b; ,29,4.7 继承,继承是软件重用的一种形式 ,可以提高系统的性能; Java不支持多继承,但支持多接口; 子类的对象也是其超类的对象,反之未必; 继承具有传递性。,继承

14、语法: class className extends superClassName 各实例变量和方法的定义 ,class point int x, y; point(int x, int y) this.x=x; this.y=y; point( ) this.x=0; this.y=0; class circle extends point int radius; circle(int r, int x, int y) radius=r; this.x=x; this.y=y; ,31,关键字super,构造函数是一种特殊的方法,子类不能继承超类的构造函数,但子类构造函数可以通过super

15、调用超类的构造函数。 当创建子类对象时,首先执行超类构造函数,然后执行子类的构造函数。例如:,class point / 程序4-8 int x, y; point(int x, int y) this.x=x; this.y=y; System.out.println(“父类构造函数被调用!“); class circle extends point int radius; circle(int r, int x, int y) super(x, y); radius=r; System.out.println(“子类构造函数被调用!“); ,public class testInherence public static void main(String args ) circle c1; c1=new circle(1,1,1); ,34,再次讨论构造函数,若父类没有定义构造函数,那么对父类数据的初始化将采用系统缺省的构造函数;例如:,class point int x, y; class circle extends point int radius; circle(int r, int x, int y) this.x=x;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号