大学教程(从零开始)面向对象编程基础

上传人:平*** 文档编号:52651250 上传时间:2018-08-24 格式:PPT 页数:98 大小:9.13MB
返回 下载 相关 举报
大学教程(从零开始)面向对象编程基础_第1页
第1页 / 共98页
大学教程(从零开始)面向对象编程基础_第2页
第2页 / 共98页
大学教程(从零开始)面向对象编程基础_第3页
第3页 / 共98页
大学教程(从零开始)面向对象编程基础_第4页
第4页 / 共98页
大学教程(从零开始)面向对象编程基础_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《大学教程(从零开始)面向对象编程基础》由会员分享,可在线阅读,更多相关《大学教程(从零开始)面向对象编程基础(98页珍藏版)》请在金锄头文库上搜索。

1、,第3章面向对象编程基础,本部分重点 JAVA语言的类 对象 继承 多态 接口 JAVA小应用程序基础,3.1面向对象的基本概念,3.1面向对象的基本概念,1 抽象,世界是由什么组成的?,2 对象,对象的特征属性,属性对象具有的各种特征每个对象的每个属性都拥有特定值 例如:王小红和朱小雨的体重不一样,60kg,王小红,属性,35岁,对象的特征方法,方法对象执行的操作,打单,收银,方法,刷卡,3 类:从对象抽取出类,顾客类 轿车类,类是模子,确定对象将会拥有的特征(属性)和行为(方法),类是对象的类型 不同于int类型:具有方法,各种口味的球状冰淇淋,球状冰淇淋模子,类和对象有什么区别呢?,类是

2、抽象的概念,仅仅是模板,比如说:“人” 对象是一个你能够看得到、摸得着的具体实体,比如:“小布什”,小布什,普京,克林顿,4 消息,对象之间的交互通过相互发送消息实现。,10,5 继承,生活中,继承的例子随处可见,动物,食草动物,食肉动物,谁是父类? 谁是子类? 能说出继承的特点吗?,继承需要符合的关系:is-a,父类更通用、子类更具体,11,12,子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性,巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?,汽车,13,为什么要使用继承 ?,使用继承,可以有效实现代码复用,14,6 多态,简单来说,多态是具有表现多种形态的能力的特征 同一个实

3、现接口,使用不同的实例而执行不同操作,彩色打印机,打印机,黑白打印机,打印效果:彩色,打印效果:黑白,打印,打印,7 封装,对象同时具有属性和方法两项特性 对象的属性和方法通常被封装在一起,共同体现事物的特性, 二者相辅相承,不能分割,谁看见过只有“完好的零件和颜色”而不能开动的汽车?,3.2Java 的类和对象,所有Java程序都以类class为组织单元,1.类,Java类模板,类将现实世界中的概念模拟到计算机程序中,public class 类名 /定义属性部分属性1的类型 属性1;属性2的类型 属性2;属性n的类型 属性n;/定义方法部分方法1;方法2;方法m; ,定义类,定义一个类的步

4、骤 1、定义类名 2、编写类的属性 3、编写类的方法,常见错误,public class .Book String bookName;String authorName;int pageNum;boolean isAvailable; ,类命名规则: 1、不能使用Java关键字 2、首字母可以为字母,也可以是“_”或“$ ”(建议不要这样) 3、不能包含空格或“.”号,代码错误,2.成员变量,注意:类体内的变量为成员变量;方法内的变量为局部变量,局部变量只在所在的方法中有效。,数据类型总结,int double char,String 使用class定义的类型 Student Teacher

5、School ,基本数据类型,引用数据类型,数据类型使用区别,变量作用域,变量声明的位置决定变量作用域 变量作用域确定可在程序中按变量名访问该变量的区域,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类型 变量4; public 返回类型 方法2()变量5类型 变量5; ,public class AutoLion,AutoLion类的方法 别的类的方法,谁能使用这些变量?

6、,方法1,方法2,成员变量,局部变量,局部变量,3.方法,类的方法,电动玩具狮子 属性: 颜色:黄色行为: 跑 叫,按此按钮, 狮子开始跑,如何定义类的方法,类的方法定义类的某种行为(或功能),方法的名称,方法的主体,方法返回的数据类型,定义类的方法,public 返回值类型 方法名() /这里编写方法的主体,步骤一:定义方法名以及返回值,步骤二:编写方法体,方法的命名,如何给方法起名字? 必须以字母、_或开头 可以包括数字,但不能以它开头遵循的命名规范 通常方法名是一个动词,如果有两个以上单词组成,第一个单词的首字母小写,其后单词首字母大写,方法的返回值,两种情况 如果方法具有返回值,方法中

7、必须使用关键字return返回该值,返回类型为该返回值的类型如果方法没有返回值,返回类型为void,public class StudentString name = “张三“;public void getName()return name; ,返回类型要匹配,return 表达式;,编译错误,常见错误,public class Schoolpublic static void main(String args)return “北京大学! “; ,返回类型是void 方法中不能有返回值,常见错误,public class Studentpublic double getInfo()doubl

8、e weight = 95.5;double height = 1.69;return weight, height; ,方法至多可以返回一个值,不能返回多个值,方法调用,方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果 方法调用:执行方法中包含的语句,对象名.方法名();,方法调用小结,方法之间允许相互调用,不需要知道方法的具体实现,提高了效率,35,this 关键字,如果某方法中的参数名或局部变量的名与类的成员变量的名相同,则成员变量在这个方法内暂时被隐藏。 成员变量在方法内被隐藏,又在方法中要引用成员变量,必须使用this关键字。 用于任何实例方法内,指向当前对象 this 的

9、值指向对其调用当前方法的对象 this 关键字可在需要当前类类型的对象引用时使用,this 关键字的示例,class Pixel 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,生活中的方法重载,类,方法,方法参数,方法实现,司机,轿车,巴士,火车,驾驶,启动、行驶、,等待乘客上车、启动、 行驶、到站停车、,正点发车、行驶、 到站停车、,如果用代码实现,我们需要三个方法,这些

10、方法的方法名称相同,参数类型不同,38,方法重载必须满足的条件,重载方法必须满足以下条件: 方法名相同。 方法的参数类型、个数、顺序至少有一项不相同。 方法的返回类型可以不相同。 方法的修饰符可以不相同。 调用重载方法时,Java 使用参数的类型和数量决定实际调用重载方法的哪个版本。,39,方法重载的代码示例,方法重载并不陌生 java.io.PrintStream类的println方法能够打印数据并换行,根据数据类型的不同,有多种实现方式,public class Test public static void main(String args) int i = 0; char c = z;

11、 String str = “hello“; System.out.println(i); System.out.println(c); System.out.println(str); ,PrintStream,println(int) println(char) println(String) ,方法名相同,参数类型不同,调用不同的println方法,方法重载,40,4 构造方法,构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值 构造方法必须满足以下语法规则: 1、方法名与类名相同 2、没有返回类型,public class Teacher5 private String na

12、me; / 教员姓名 / 构造方法 public Teacher5() name = “无名氏“; ,Public Teacher5Test public static void main(String args) Teacher5 teacher = new Teacher5(); ,使用new关键字调用构造方法,41,带参数的构造方法,通过带参数的构造方法,显式地为实例变量赋予初始值,public class Teacher6 private String name; / 教员姓名 private int age; / 年龄 private String education; / 学历 p

13、rivate String position; / 职位 / 带参数的构造方法 Public Teacher6(String pName,int pAge,String pEducation,String pPosition) name = pName; age = pAge; / 可以增加对age等属性的存取限制条件 education = pEducation; position = pPosition; public String introduction() return “大家好!我是“ + name + “,我今年“ + age + “岁,学历“ + education + “,目

14、前职位是“+position; ,42,带参数的构造方法,通过调用带参数的构造方法,简化对象初始化的代码,public class Teacher6Test public static void main(String args) Teacher6 teacher = new Teacher6(“李芳“,23, “本科“, “咨询师“); System.out.println(teacher.introduction(); ,创建对象时,一并完成了对象成员的初始化工作,大家好!我是李芳,我今年23岁,学历本科,目前职位是咨询师,3.2.6 继承,继承是面向对象语言的重要机制。借助继承可以扩展原

15、有的代码,应用到其他程序中,不必重新编写这些代码,在Java中,继承是通过扩展原有的类,声明新类来实现的。,扩展声明的新类称为子类,原有的类称为超类(父类) Java语言不支持多重继承,限定一个类只能有一个超类。 extends,class 子类名 extends 父类名 类体 class E extends D 如果不指定超类,则该类的超类是系统声明的类 Java.lang.Object,子类自然的继承其父类中不是private的成员变量作为自己的成员变量,并且自然的继承父类中不是private的方法作为自己的方法。 类的继承原则如下: 子类继承父类的成员变量,包括实例成员变量和类成员变量。

16、 子类继承父类除构造方法以外的成员方法,包括实例成员方法和类成员方法。,重写,子类不满意父类的方法时,在子类中可以根据需要对从父类继承来的方法进行重写。 重写方法必须和被重写方法具有相同的方法名称、参数列表和返回类型。 重写方法不能使用比被重写方法更严格的访问权限。 TestOverWrite.java 与重载(overload)的区别:重载是函数名同,参数不同。,重写,子类Dau中声明了方法dance(),跟父类(超类)中的方法的名字,个数,类型完全相同,超类的方法在子类中被隐藏。 子类对象调用dance()时,自然调用子类的dance()方法。 超类方法在子类中隐藏称为重写或置换。 子类对成员变量的隐藏和方法的重写可以把超类的状态和行为改变为自身的状态和行为。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

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