版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章面向对象编程基础本部分重点JAVA语言的类对象继承多态接口JAVA小应用程序基础3.1面向对象的基本概念3.1面向对象的基本概念1 抽象世界是由什么组成的? 名胜 人 物品 动物 ,植物 2 对象对象的特征属性属性对象具有的各种特征 每个对象的每个属性都拥有特定值例如:王小红和朱小雨的体重不一样 60kg王小红属性 35岁收银员小王 对象的特征方法方法对象执行的操作 打单 收银 方法 刷卡 收银员王小红3 类:从对象抽取出类顾客类轿车类 类是模子,确定对象将会拥有的特征(属性)和行为(方法)类是对象的类型不同于int类型:具有方法 各种口味的球状冰淇淋 球状冰淇淋模子类和对象有什么区别呢
2、?类是抽象的概念,仅仅是模板,比如说:“人”对象是一个你能够看得到、摸得着的具体实体,比如:“小布什”小布什普京克林顿“人”类特征(属性)年龄体重行为(方法)衣食住行4 消息对象之间的交互通过相互发送消息实现。105 继承生活中,继承的例子随处可见动物食草动物食肉动物谁是父类?谁是子类?能说出继承的特点吗?继承需要符合的关系:is-a,父类更通用、子类更具体1112子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性巴士是汽车吗?卡车是汽车吗?出租车是汽车吗?最大载客数量报站引擎数量外观颜色刹车加速汽车最大载重量卸货所属公司最大载客数量打发票属性行为13为什么要使用继承 ?使用继承,可
3、以有效实现代码复用146 多态简单来说,多态是具有表现多种形态的能力的特征 同一个实现接口,使用不同的实例而执行不同操作彩色打印机 打印机 黑白打印机打印效果:彩色打印效果:黑白打印 打印 7 封装对象同时具有属性和方法两项特性对象的属性和方法通常被封装在一起,共同体现事物的特性, 二者相辅相承,不能分割谁看见过只有“完好的零件和颜色”而不能开动的汽车?3.2Java 的类和对象 所有Java程序都以类class为组织单元 1.类Java类模板类将现实世界中的概念模拟到计算机程序中public class 类名 /定义属性部分 属性1的类型 属性1; 属性2的类型 属性2; 属性n的类型 属性
4、n; /定义方法部分 方法1; 方法2; 方法m;定义类定义一个类的步骤1、定义类名2、编写类的属性3、编写类的方法常见错误public class .Book String bookName; String authorName; int pageNum; boolean isAvailable; 类命名规则:1、不能使用Java关键字2、首字母可以为字母,也可以是“_”或“$ ”(建议不要这样)3、不能包含空格或“.”号代码错误2.成员变量注意:类体内的变量为成员变量;方法内的变量为局部变量,局部变量只在所在的方法中有效。数据类型总结intdoublechar String使用class定
5、义的类型StudentTeacherSchool基本数据类型引用数据类型数据类型使用区别数据类型特征声明使用基本数据类型没有方法int i= 8;i+;引用数据类型具有方法Student stu = new Student();stu.age+;变量作用域变量声明的位置决定变量作用域变量作用域确定可在程序中按变量名访问该变量的区域for(int i = 0, a = 0; i 4; i+) a+;System.out.println(a);a的作用域仅在for循环中 代码错误变量作用域变量1类型 变量1; 变量2类型 变量2;变量3类型 变量3;public 返回类型 方法1() 变量4类型
6、变量4;public 返回类型 方法2() 变量5类型 变量5; public class AutoLion AutoLion类的方法别的类的方法 谁能使用这些变量? 方法1 方法2 成员变量局部变量局部变量3.方法类的方法 电动玩具狮子属性:颜色:黄色行为:跑叫按此按钮,狮子开始跑如何定义类的方法类的方法定义类的某种行为(或功能) 方法的定义 方法的名称 方法的主体 方法返回的数据类型 定义类的方法public 返回值类型 方法名() /这里编写方法的主体步骤一:定义方法名以及返回值步骤二:编写方法体方法的命名如何给方法起名字?必须以字母、_或开头可以包括数字,但不能以它开头遵循的命名规范通
7、常方法名是一个动词,如果有两个以上单词组成,第一个单词的首字母小写,其后单词首字母大写方法的返回值两种情况如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型如果方法没有返回值,返回类型为voidpublic class Student String name = 张三; public void getName() return name; 返回类型要匹配return 表达式;编译错误常见错误public class School public static void main(String args) return “北京大学! ; 返回类型是void方法中
8、不能有返回值 常见错误public class Student public double getInfo() double weight = 95.5; double height = 1.69; return weight, height; 方法至多可以返回一个值,不能返回多个值方法调用方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果方法调用:执行方法中包含的语句 对象名.方法名();方法调用小结方法之间允许相互调用,不需要知道方法的具体实现,提高了效率 情况举例1、类Student 的方法a()调用Student类的方法b(),直接调用public void a() b();
9、/调用b() 2、类Student的方法a()调用类Teacher的方法b(),先创建类对象,然后使用“.”调用public void a() Teacher t = new Teacher(); t.b(); /调用Teacher类的b() 35this 关键字如果某方法中的参数名或局部变量的名与类的成员变量的名相同,则成员变量在这个方法内暂时被隐藏。成员变量在方法内被隐藏,又在方法中要引用成员变量,必须使用this关键字。用于任何实例方法内,指向当前对象this 的值指向对其调用当前方法的对象 this 关键字可在需要当前类类型的对象引用时使用 this 关键字的示例class Pixel
10、 int x;int y; void init (int x, int y) this.x = x; this.y = y; public static void main (String args) Pixel p = new Pixel(); p.init (4,3); 对象的引用37生活中的方法重载类方法方法参数方法实现司机 轿车 巴士 火车 驾驶启动、行驶、等待乘客上车、启动、行驶、到站停车、正点发车、行驶、到站停车、如果用代码实现,我们需要三个方法,这些方法的方法名称相同,参数类型不同 38方法重载必须满足的条件重载方法必须满足以下条件:方法名相同。方法的参数类型、个数、顺序至少有一
11、项不相同。方法的返回类型可以不相同。方法的修饰符可以不相同。调用重载方法时,Java 使用参数的类型和数量决定实际调用重载方法的哪个版本。 39方法重载的代码示例方法重载并不陌生java.io.PrintStream类的println方法能够打印数据并换行,根据数据类型的不同,有多种实现方式public class Test public static void main(String args) int i = 0;char c = z;String str = hello;System.out.println(i);System.out.println(c);System.out.prin
12、tln(str);PrintStreamprintln(int)println(char)println(String)方法名相同,参数类型不同调用不同的println方法方法重载404 构造方法构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值构造方法必须满足以下语法规则:1、方法名与类名相同2、没有返回类型public class Teacher5 private String name; / 教员姓名/ 构造方法public Teacher5() name = 无名氏;Public Teacher5Test public static void main(String args
13、) Teacher5 teacher = new Teacher5();使用new关键字调用构造方法41带参数的构造方法通过带参数的构造方法,显式地为实例变量赋予初始值 public class Teacher6 private String name; / 教员姓名private int age; / 年龄private String education; / 学历private String position; / 职位/ 带参数的构造方法Public Teacher6(String pName,int pAge,String pEducation,String pPosition) na
14、me = pName;age = pAge; / 可以增加对age等属性的存取限制条件education = pEducation;position = pPosition;public String introduction() return 大家好!我是 + name + ,我今年 + age + 岁,学历 + education + ,目前职位是+position;42带参数的构造方法通过调用带参数的构造方法,简化对象初始化的代码public class Teacher6Test public static void main(String args) Teacher6 teacher
15、= new Teacher6(李芳, 23, 本科, 咨询师);System.out.println(roduction();创建对象时,一并完成了对象成员的初始化工作大家好!我是李芳,我今年23岁,学历本科,目前职位是咨询师3.2.6 继承继承是面向对象语言的重要机制。借助继承可以扩展原有的代码,应用到其他程序中,不必重新编写这些代码,在Java中,继承是通过扩展原有的类,声明新类来实现的。扩展声明的新类称为子类,原有的类称为超类(父类)Java语言不支持多重继承,限定一个类只能有一个超类。extendsclass 子类名 extends 父类名 类体 class E
16、extends D 如果不指定超类,则该类的超类是系统声明的类 Java.lang.Object子类自然的继承其父类中不是private的成员变量作为自己的成员变量,并且自然的继承父类中不是private的方法作为自己的方法。类的继承原则如下:子类继承父类的成员变量,包括实例成员变量和类成员变量。子类继承父类除构造方法以外的成员方法,包括实例成员方法和类成员方法。重写子类不满意父类的方法时,在子类中可以根据需要对从父类继承来的方法进行重写。重写方法必须和被重写方法具有相同的方法名称、参数列表和返回类型。重写方法不能使用比被重写方法更严格的访问权限。TestOverWrite.java与重载(o
17、verload)的区别:重载是函数名同,参数不同。重写子类Dau中声明了方法dance(),跟父类(超类)中的方法的名字,个数,类型完全相同,超类的方法在子类中被隐藏。子类对象调用dance()时,自然调用子类的dance()方法。超类方法在子类中隐藏称为重写或置换。子类对成员变量的隐藏和方法的重写可以把超类的状态和行为改变为自身的状态和行为。 例如下面的这段程序就是这样的情况:class SuperClass /父类 int y; void setY() y=0; class SubClass extends SuperClass int y; / 父类变量y被隐藏 void setY()
18、/ 重写父类的方法setY() y=1; class Parent public void function() System.out.println(I am in Parent!);class Child extends Parent private void function()System.out.println(I am in Child!);public class RTpolyTest public static void main(String args) Parent pl=new Parent( ); Parent p2=new Child( ); p1.function(
19、 ); p2.function( ); 方法重写的例子(1)多态性动态联编(动态绑定):编译时暂不绑定调用哪个方法,而是在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。new出对象来之后才能确定到底调用哪一个方法。(2)多层继承多层继承继承声明的新类,又可以被其他类再继承,从而构成多层继承。(3)多层继承中构造方法的调用顺序构造方法的调用顺序与类的继承顺序一致,从最高层次的超类开始,按继承顺序调用各类的构造方法。如果子类的构造方法要调用超类的构造方法,给从超类继承的成员变量初始化,用super。关键字super用来引用基类的成分。this:指向对象本身。super:指向当
20、前对象的父对象。继承中的构造方法子类的构造过程必须调用其基类的构造方法。先构造父类对象,再把剩下的东西造出来使用super(参数列表)调用基类的构造方法;使用this(参数列表)调用本类的另外的构造方法。如果调用了super,必须写在子类构造方法的第一行。如果子类的构造方法中没有显式地调用基类构造方法,则系统默认调用基类无参数的构造方法。如果子类构造方法中既没有显式地调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。 3.2.7 java面向对象的其他机制final类,final方法,final变量final的类不能够被继承。final class D class M extends
21、 D 错误final的方法不能够被重写。final修饰变量,声明该变量的值不能被改变,相当于常量。final的成员变量final的局部变量(形参)final int variableName=10; final int a;a=1;a=2 错误习惯常量名用大写abstract用abstract 关键字来修饰一个类时,这个类叫做抽象类。用abstract 关键字来修饰一个方法时,这个方法叫做抽象方法。含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。(子类去实现)抽象类不能被实例化。抽象方法只需声明,不需实现。super子类隐藏了超类的成员变量或者覆盖了超类方法后,利用s
22、uper,子类可以引用超类的成员变量或被覆盖的方法使用3种情况:使用super调用超类的构造方法使用super调用超类被子类覆盖的方法使用super访问超类被子类隐藏的成员变量this 关键字this用来指自己。this有多种作用,例如,将对象自己作为参数,调用别的方法.当方法的局部变量隐藏成员变量时,利用this引用成员变量,在构造函数内调用另一构造函数。class Pointint x,y;Point() x=10; y=20;Point(int x, int y) this.x=x; this.y=y; Point p1,p2class B int b,c; B () this(2,3)
23、; B(int x,int y)b=x;c=y;类之间的is-a和has-a关系如果类A是扩展类B,则子类A和超类B之间是is-a关系。类B的所有成员 类A也有。如果类A的某个成员变量的类型是B,则类A和类B之间是has-a关系,类A包含类B内部类Java也允许在类声明内部嵌套类声明。嵌套的类可以是静态的或者是非静态的。静态类不能直接引用其他包含类的成员,必须实例化。非静态的嵌套类,因为需要进行事件处理,非常流行3.3 接口Java程序中类只能继承一个类,这种继承称为单继承。Java虽然不允许一个类继承多个类,但允许一个类实现多个接口。接口有与类相似的基本形式。接口有常量的定义和方法定义,但没
24、有方法的实现代码。类除了能继承一个类外,可以实现多个接口。1、接口的定义public interface 接口名 extends 超接口表 接口体 接口名通常以able或ible结尾。接口是一种只能由常量定义和抽象方法组成的特殊类。用public修饰的接口是公共接口,可以被所有的类和接口使用。没有的只能被同一个包中的其他类和接口使用。2、接口体接口体中的内容是一系列常量定义和方法定义。其中方法定义是一种方法声明,不提供方法的实现。用;结尾interface Sleepablefinal int MAX=100;void sleepSometime(int daltaT);float work(
25、float x,float y);接口的所有变量都默认是final static属性,所有的方法都默认为public abstract属性。一个类可以用implements声明自己使用一个或多个接口,实现多个接口时,接口名用逗号隔开。class pig extends Animal implements Eatable,Sleepable 如果一个类要实现一个接口,那必须实现该接口的所有方法,为这些方法提供实现的方法体。实现必须完全一致,并用public修饰。3.4 基本类基本类型值与基本类对象能相互转换。可以利用以下形式的基本类构造方法,由基本类型值得到对应基本类对象。public 基本类(
26、基本类型 v)例如 Integer n=new Integer(123);也可以由基本类对象到基本类型值。设有一个Double类对象dobj, double d=dobj.doubleValue();boolean b=bobj.booleanValue();3.5 Java 小应用程序每个小程序都继承java.applet.Applet如果小应用程序已经用import java.applet.Applet导入系统Applet类,小应用程序的主类 public class 主类名 extends Applet如果未用import导入系统Applet,则主类声明: public 类名 exten
27、ds java.applet.Applet小应用程序不能调用本地的应用程序和动态时的动态数据库等1、小应用程序的建立和运行一个小应用程序从建立到运行4步骤(1)用Java语言编写小程序的源程序(2)把小应用程序的源程序编译成字节码.class文件(3)将应用程序的字节码文件嵌入web页中,设计一个指定小应用程序的html文件.html(4)在支持Java的浏览器上运行.2、Applet类的基本方法1 init( ) 初始化,由浏览器载入内存时调用init(),该方法只运行一次2start( ) 初始化后,紧接着调用start()方法,启动小应用程序主线程,或当用户从小应用程序所在的web页面转
28、到其他页面,然后又返回时,start()方法再次被调用。3stop( ) 当浏览器离开小应用程序所在的页面转到其他页面,调用stop()方法,挂起小应用程序的执行。4destroy( ) 当关闭浏览器时,调用destroy()方法,结束小应用程序的生命,关闭线程释放对象资源。5、paint(Graphics g)方法 该方法用于在屏幕上显示某些信息。如文字,色彩,背景图像等。6、repaint()方法 为在java页面上显示动态效果,需要repaint方法,先清除paint方法以前所画的内容,然后再调用paint()方法。7、update()方法 调用repaint()方法时,系统会自动调用u
29、pdate方法。import java.awt.*;import java.applet.*;public class e324 extends Applet String ;public void init() sleeptime=getParameter(sleeptime);();public void paint(Graphics g) g.drawString(sleeptime, 50, 60 );g.drawString(, 80, 80 );class Complexdouble a,b; /a为实部,b为虚部 a+biComplex()Complex(int a,int b)
30、this.a=a;this.b=b;public String print()/输出复数,返回复数的字符串表示形式String result=new String(this.a+(b0)?+:)+(b!=0)?this.b+i:);return result;public double getA()/取复数实部,返回复数的实部return a;public double getB()/取复数的虚部,返回复数的虚部return b;3.6 子类在什么情况下能隐藏超类的成员变量和方法?解:子类重载父类的成员变量、方法时候。3.7 在子类中是否允许有一个方法和超类的方法名字相同,而类型不同?解:方法
31、重写是指:子类中定义一个方法,并且这个方法的名字、返回类型、参数个数、和类型与从父类继承的方法完全相同。public Complex add(Complex val) /复数加法,返回当前复数对象与参数指定的复数对象的和Complex result=new Complex();result.a=this.a+val.a;result.b=this.b+val.b;return result;public Complex subtract(Complex val) /复数减法,返回当前复数对象与参数指定的复数对象的差,当前对象减去参数对象Complex result=new Complex();result.a=this.a-val.a;result.b=this.b-val.b;return result;public Complex multiply(Complex val)/复数乘法,返回当前复数对象与参数指定的复数对象的积Complex result=new Complex();result.a=this.a*val.a-this.b*val.b;result.b=this.a*val.b+this.b*val.a;return result;public Complex div
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食品企业总经理招聘合同
- 特殊管理药品市场准入指南
- 高山度假村道路建设合同
- 城市广场铁艺安装协议
- 2024年配电箱柜集成解决方案采购合同3篇
- 2024年透水混凝土施工协议3篇
- 家庭园丁保姆合同样本
- 砌体结构防水防腐施工合同
- 通信设备销售票据管理
- 零星剧院装修维修合同
- 《公共政策学(第二版)》 课件 杨宏山 第1-6章 导论、政策系统-政策执行
- 2024年商用密码应用安全性评估从业人员考核试题库-中(多选题)
- Be going to 句型(教学设计)-2023-2024学年人教PEP版英语五年级下册
- 2024小学数学新教材培训:新教材的主要特色
- 2024年中考数学复习:阿氏圆最值模型专项练习
- 2023年10月下半年空军直接选拔招录军官笔试历年典型考题及考点剖析附答案详解
- 土方清理合同范本
- 防洪排涝项目社会稳定风险分析
- DL∕T 1455-2015 电力系统控制类软件安全性及其测评技术要求
- 流程即组织力(企业高效增长的业务管理逻辑)
- 新公司组织架构图及人员设置
评论
0/150
提交评论