面向对象编程基础.ppt

上传人:本田雅阁 文档编号:3223940 上传时间:2019-08-02 格式:PPT 页数:64 大小:1.16MB
返回 下载 相关 举报
面向对象编程基础.ppt_第1页
第1页 / 共64页
面向对象编程基础.ppt_第2页
第2页 / 共64页
面向对象编程基础.ppt_第3页
第3页 / 共64页
面向对象编程基础.ppt_第4页
第4页 / 共64页
面向对象编程基础.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《面向对象编程基础.ppt》由会员分享,可在线阅读,更多相关《面向对象编程基础.ppt(64页珍藏版)》请在三一文库上搜索。

1、Java 语言程序设计(一)串讲,主讲人:周立民 更多优质自考资料尽在百度贴吧自考乐园俱乐部(http:/ JAVA语言的类 对象 继承 多态 接口 JAVA小应用程序基础,世界是由什么组成的?,面向对象编程基础,对象的特征属性,属性对象具有的各种特征 每个对象的每个属性都拥有特定值 例如:王小红和朱小雨的体重不一样,60kg,王小红,属性,35岁,对象的特征方法,方法对象执行的操作,打单,收银,方法,刷卡,封装,对象同时具有属性和方法两项特性 对象的属性和方法通常被封装在一起,共同体现事物的特性, 二者相辅相承, 不能分割,谁看见过只有“完好的零件和颜色”而不能开动的汽车?,类:从对象抽取出

2、类,顾客类 轿车类 ,类是模子,确定对象将会拥有的特征(属性)和行为(方法),类是对象的类型 不同于int类型:具有方法,各种口味的球状冰淇淋,球状冰淇淋模子,类和对象有什么区别呢?,类是抽象的概念,仅仅是模板,比如说:“人” 对象是一个你能够看得到、摸得着的具体实体,比如:“小布什”,小布什,普京,克林顿,Java 是面向对象的语言,所有Java程序都以类class为组织单元 关键字class定义自定义的数据类型,public class HelloWorld public static void main(String args) System.out.println(“使用Java语言理

3、解程序逻辑“); ,Java类模板,类将现实世界中的概念模拟到计算机程序中,public class 类名 /定义属性部分 属性1的类型 属性1; 属性2的类型 属性2; 属性n的类型 属性n; /定义方法部分 方法1; 方法2; 方法m; ,定义类,定义一个类的步骤 1、定义类名 2、编写类的属性 3、编写类的方法,常见错误,public class .Book String bookName; String authorName; int pageNum; boolean isAvailable; ,类命名规则: 1、不能使用Java关键字 2、首字母可以为字母,也可以是“_”或“$ ”(

4、建议不要这样) 3、不能包含空格或“.”号,代码错误,如何创建和使用对象,使用对象的步骤: 使用new创建类的一个对象 使用对象:使用“.”进行以下操作 给类的属性赋值:对象名.属性 调用类的方法:对象名.方法名(),School center = new School();,center.schoolName = “北京大学“; /给属性赋值 center.toString(); /调用类的方法,该方法中的操作将被执行,面向对象(OO)的优点,便于程序模拟现实世界中的实体 用“类”表示实体的特征和行为 隐藏细节 对象的行为和属性被封装在类中,外界通过调用类的方法来获得,不需关注内部细节如何实

5、现 可重用 可以通过类的模板,创建多个类的对象,数据类型总结,int double char,String 使用class定义的类型 Student Teacher School ,基本数据类型,引用数据类型,数据类型使用区别,类的方法,写出狮子对象的“跑”方法 写出狮子对象的“叫”方法,电动玩具狮子 属性: 颜色:黄色 行为: 跑 叫,按此按钮, 狮子开始跑,如何定义类的方法,类的方法定义类的某种行为(或功能),方法的名称,方法的主体,方法返回的数据类型,定义类的方法,public 返回值类型 方法名() /这里编写方法的主体 ,步骤一:定义方法名以及返回值,步骤二:编写方法体,方法的命名,

6、如何给方法起名字? 必须以字母、_或开头 可以包括数字,但不能以它开头 遵循的命名规范 通常方法名是一个动词,如果有两个以上单词组成,第一个单词的首字母小写,其后单词首字母大写,方法的返回值,两种情况 如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型 如果方法没有返回值,返回类型为void,public class Student String name = “张三“; public void getName() return name; ,返回类型要匹配,return 表达式;,编译错误,常见错误,public class School public s

7、tatic void main(String args) return “北京大学! “; ,返回类型是void 方法中不能有返回值,常见错误,public class Student public double getInfo() double weight = 95.5; double height = 1.69; return weight, height; ,方法至多可以返回一个值,不能返回多个值,方法调用,方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果 方法调用:执行方法中包含的语句,对象名.方法名();,方法调用小结,方法之间允许相互调用,不需要知道方法的具体实现,提高

8、了效率,变量作用域,变量声明的位置决定变量作用域 变量作用域确定可在程序中按变量名访问该变量的区域, 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类的方法 别的类的方法,谁能使用这些变量?,方法1,方法2,成员变量,局部变量,局部变

9、量,面向对象的编程思维,ScoreCalc类 和 Test类,public static void main(String args) Scanner input = new Scanner(System.in); System.out.print(“请输入Java成绩:“); int java = input.nextInt(); /*计算并显示输出*/ int total = java + c + db; double avg = total / 3; System.out.print(“总成绩:“ + total); System.out.print(“n平均分: “ + avg); ,

10、一次还可以接受,如果 还要再执行这个功能, 难道还要重复再写?,类的方法实现某个特定的功能, 别的类不需要知道它如何实现! 知道了实现此功能的类和它的方法名, 就可以直接调用了,不用重复写代码!,什么是封装,public class Teacher2 private String name; / 教员姓名 / 返回教员姓名 public String getName() return name; / 设定教员姓名 public void setName(String name) this.name = name; ,封装,就是隐藏实现细节 将属性私有化,提供公有方法访问私有属性 通过这些公有方

11、法访问私有属性,Teacher2 teacher = new Teacher2(); teacher.setName (“李芳“); String tName = teacher.getName();,通过setter、getter方法访问name属性,this代表当前类的实例,29,如何实现封装,封装的实现: 1、修改属性的可见性来限制对属性的访问 2、为每个属性创建一对赋值(setter)方法和取值(getter) 方法,用于对这些属性的访问 3、在setter和getter方法中,加入对属性的存取限制,public class Teacher3 private String name;

12、/ 教员姓名 private int age; /年龄 public int getAge() return age; public void setAge(int age) if (age22) System.out.println(“错误!最小年龄应为22岁!“); this.age = 22; /如果不符合年龄要求,则赋予默认值 else this.age = age; /此处省略对name属性的setter、getter方法 ,1,2,3,30,如何实现封装,public class Teacher3Test public static void main(String args) A

13、ccpTeacher3 teacher = new AccpTeacher3(); teacher.setName (“李芳“); teacher.setAge(10); System.out.println(teacher.introduction(); ,使用封装,增加了数据访问限制,增强了程序的可维护性,错误!最小年龄应为22岁! 大家好!我是李芳,我今年22岁,测试类通过调用setter方法,为对象的各个属性赋值,31,什么是构造方法,构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值 构造方法必须满足以下语法规则: 1、方法名与类名相同 2、没有返回类型,public cl

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

15、ivate String education; / 学历 private 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 + “,我今年“ +

16、age + “岁,学历“ + education + “,目前职位是“+position; ,33,带参数的构造方法,通过调用带参数的构造方法,简化对象初始化的代码,public class Teacher6Test public static void main(String args) Teacher6 teacher = new Teacher6(“李芳“, 23, “本科“, “咨询师“); System.out.println(teacher.introduction(); ,创建对象时,一并完成了对象成员的初始化工作,大家好!我是李芳,我今年23岁,学历本科,目前职位是咨询师,34

17、,生活中的方法重载,类,方法,方法参数,方法实现,司机,轿车,巴士,火车,驾驶,启动、行驶、,等待乘客上车、启动、 行驶、到站停车、,正点发车、行驶、 到站停车、,如果用代码实现,我们需要三个方法,这些方法的方法名称相同,参数类型不同,35,方法重载必须满足的条件,重载方法必须满足以下条件: 方法名相同。 方法的参数类型、个数、顺序至少有一项不相同。 方法的返回类型可以不相同。 方法的修饰符可以不相同。 调用重载方法时,Java 使用参数的类型和数量决定实际调用重载方法的哪个版本。,36,方法重载的代码示例 1,方法重载并不陌生 java.io.PrintStream类的println方法能够

18、打印数据并换行,根据数据类型的不同, 有多种实现方式,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.println(str); ,PrintStream,println(int) println(char) println(String) ,方法名相同,参数类型不同,调用不同的println方法,方法重载,37,生活中的继承,生活

19、中,继承的例子随处可见,动物,食草动物,食肉动物,谁是父类? 谁是子类? 能说出继承的特点吗?,继承需要符合的关系:is-a,父类更通用、子类更具体,38,生活中的继承,子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性,巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?,汽车,39,为什么要使用继承 ?,使用继承,可以有效实现代码复用,40,如何实现继承,在Java语言中,用extends关键字来表示一个类继承了另一个类,例如:,public class JavaTeacher2 extends Teacher /其余代码省略 ,在父类中只定义一些通用的属性与方法,例如:,publi

20、c class Teacher private String name; / 教员姓名 private String school; / 所在中心 public AccpTeacher(String myName, String mySchool) /初始化属性值 public void giveLesson() /授课方法的具体实现 public void introduction() /自我介绍方法的具体实现 ,41,如何实现继承,子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法,public class Teacher private String name; / 教员姓名

21、private String school;/ 所在中心 public AccpTeacher (String myName, String mySchool) /初始化属性值 public void giveLesson() /授课方法的具体实现 public void introduction() /自我介绍方法的具体实现 ,public class JavaTeacher2 extends Teacher public AccpJavaTeacher2(String myName, String mySchool) super(myName, mySchool); public void

22、 giveLesson() System.out.println(“启动Eclipse“); super.giveLesson(); ,由于giveLesson()方法与父类的实现有所不同,因此重写了该方法,方法重写:子类和父类的方法具有相同的名称、参数列表、返回类型,父类中的属性和方法可以被子类继承,42,public class JavaTeacher2 extends Teacher Public JavaTeacher2(String myName, String mySchool) super(myName, mySchool); ,如何实现继承,子类的构造方法中,通过super关键

23、字调用父类的构造方法,方法重写后,通过super关键字调用父类的方法,public class JavaTeacher2 extends Teacher public void giveLesson() System.out.println(“启动 Eclipse“); super.giveLesson(); ,通过调用父类的构造方法,完成对属性值的初始化,43,一切类的“祖先”Object,在Java 中,所有的Java类都直接或间接地继承了java.lang.Object类,public class MyObject / ,public class MyObect extends Obje

24、ct / ,在Eclipse中调用MyObject对象的成员,会自动弹出继承自Object的所有方法,44,什么是多态,简单来说,多态是具有表现多种形态的能力的特征 同一个实现接口,使用不同的实例而执行不同操作,彩色打印机,打印机,黑白打印机,打印效果:彩色,打印效果:黑白,打印,打印,45,public class Teacher public void giveLesson() System.out.println(“知识点讲解“); System.out.println(“总结提问“); ,如何实现多态,1、子类重写父类的方法 2、编写方法时,使用父类定义的方法 3、运行时,根据实际创建

25、的对象类型动态决定使用哪个方法,46,什么是Java接口,一个Java接口是一些方法特征的集合,但没有方法的实现,public interface PCI public void start(); public void stop(); ,class SoundCard implements PCI public void start() System.out.println(“Du du.“); public void stop() System.out.println(“Sound stop!“); ,Java接口中定义的方法在不同的地方被实现,可以具有完全不同的行为,这是Java接口,相

26、当于主板上的PCI插槽的规范,class NetworkCard implements PCI public void start() System.out.println(“Send.“); public void stop() System.out.println(“Network stop!“); ,47,什么是Java接口,public class Assembler public static void main(String args) PCI nc = new NetworkCard(); PCI sc = new SoundCard(); nc.start(); sc.star

27、t(); ,可以使用Java接口标识类型 运行时,根据实际创建的对象类型调用相应的方法实现,Du du. Send.,控制台输出,2,1,48,多态与接口的区别,相同点:都是为了实现程序的可扩展和可维护性. 不同点: 多态:指实现同一个接口,使用不同的实例而执行不同的操作,必须存在继承关系. 接口:存在共同的方法特征,但对方法有各自不同的实现,不必存在继承关系.,49,this 关键字,用于任何实例方法内,指向当前对象 this 的值指向对其调用当前方法的对象 this 关键字可在需要当前类类型的对象引用时使用,this 关键字的示例,class Pixel int x; int y; voi

28、d 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); ,51,什么是常量,常量是一种标识符,它的值在运行期间恒定不变 常量标识符在程序中只能被引用,而不能被重新赋值,52,Java中常量的定义规则,加入final 关键字代表常量, 加入static 关键字代表类变量 尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串,public class Student public static fina

29、l int FEMALE = 1; /代表女性 public static final int MALE = 2; /代表男性 private int sex; /性别 public void setSex(int sex) if(sex=FEMALE) System.out.println(“这是一名女学生“); else if(sex = MALE) System.out.println(“这是一名男学生“); this.sex = sex; ,53,在Java接口中声明常量,在Java 接口中声明的变量在编译时会自动加上static final的修饰符,即声明为常量, 因而Java接口通

30、常是存放常量的最佳地点,public interface SchoolType public static final String school1 = “国立大学“; public static final String school2 = “民办大学“; ,public interface SchoolType String school1 = “国立大学“; String school2= “民办大学“; ,等同于,54,OO思想总结,55,访问修饰符,信息隐藏是 OOP 最重要的功能之一,也是使用访问修饰符的原因 信息隐藏的原因包括: 对任何实现细节所作的更改不会影响使用该类的代码 防

31、止用户意外删除数据 此类易于使用,访问修饰符,56,访问修饰符,57,访问修饰符,访问修饰符可访问性,58,方法修饰符,59,static 修饰符,static修饰符修饰的方法叫静态方法 目的 使该方法独立于类的实例,使用类去访问,而不是类实例,所以也叫类方法,60,static 修饰符,调用静态方法的语法为: classname.methodname( );,61,final 修饰符,62,abstract 修饰符,由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类 抽象方法必须声明在抽象类中 抽象方法语法: abstract type method_name(par

32、ameter_list); 声明抽象类语法: abstract class 使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方法的实现细节,63,abstract 修饰符,抽象类可以具有指向子类对象的对象引用,64,JAVA小应用程序-Java Applet,它是嵌入在Web页上供浏览器运行的程序,也可放在服务器上供客户端下载使用, 每个小应用程序继承java.applet.Applet 一、小应用程序建立到运行的4个步骤: 1、用Java语言编写小应用程序的源程序。 2、小应用程序翻译成字节码。 3、将小应用程序的字节码嵌入到Web页中,设计一个指定小应用程序的HTML文件 使用标记 4、在支持Java的浏览器上运行。 二、熟悉APPLET类的基本方法作用。,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1