ImageVerifierCode 换一换
格式:PPT , 页数:104 ,大小:3.61MB ,
资源ID:4529253      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-4529253.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java面向对象程序设计.ppt)为本站会员(gsy285395)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Java面向对象程序设计.ppt

1、Java面向对象,课程目录,1.面向对象程序设计 2.继承 3.多态 4.接口,OOP,OOP是一种设计和 实现软件系统的方法,OOP是在计算机程序中 模拟现实世界中的概念,在 OOP 中,现实世界的 所有事物全都被视为对象,在计算机程序中使用对象 模拟现实世界中的实体,6.1 面向对象程序设计,对象是人们要进行研究的任何事物,例如:每个汽车都是对象,具有各自的特征和行为,6.1 面向对象程序设计,收银员对象,顾客对象,顾客 姓名:朱丽叶 年龄:28 体重:52千克操作: 购买商品,属性,姓名:布兰尼 职衔:收银员 年龄:35 体重:60千克操作: 收款 打印帐单,行为,对象的示例,说一说教室

2、里的对象 描述他们的属性和行为,投影,电脑,椅子,学生,对象的示例,类,小汽车,类的实例化,是由类具体化对象,类,产地,车体颜色,行驶,刹车,归纳一组相似对象的共性,对象,属性,方法,类描述一组相似对象的共性, 是对某类事物的描述.,类和对象的示例,收银员,系统管理员,仓库管理员,促销员,采购经理,雇员,对象的属性和方法,列出这辆法拉利F360 Spider的属性和方法列出小狗对象的属性和方法,属性:品牌:法拉利型号:F360 Spider颜色:黄色价格:380万元 方法:发动停止加速,属性: 颜色:白色 方法: 叫跑吃,从对象抽象出“类”,轿车,顾客,类,顾客类 轿车类,类是模子,确定对象将

3、会拥有的特征(属性)和行为(方法),我们编程的主要任务就是设计一个个类,然后由类产生对象,完成特定的功能。,类是对某类事物的描述,类是具有相同属性和行为的一组对象的模板,6.2 类与对象,形状类,动物类,汽车类,类的示例,类的定义,所有Java程序都以类class为组织单元,public class 类名 /定义属性部分属性1的类型 属性1;属性2的类型 属性2;/定义方法部分方法1方法2 ,定义类的关键字,类体,public class Person String name;int age;public void eat()System.out.println(“Eating“);publi

4、c void work()System.out.println(“Working.“); ,类的定义示例,public class Student String name=“张三”; int age = 26;/学习public void study() ,类的成员,类的成员,属性,方法,类名,属性,属性对象具有的各种特征,在类中用变量表示 每个对象的每个属性都拥有特定值 例如:张三和李四的姓名不一样 属性名称由类的所有实例共享,男,张三,属性,18岁,方法,方法对象执行的操作,学习,选课,方法,考试,方法的示例,缝衣服的步骤,量尺寸,得到工具,缝衣服,方法,缝制衣服,裁缝,方法的定义,方法的

5、名称,参数列表,方法的主体,方法的返回值类型,方法是对象所具有的功能和操作 对象需要做某些事情,在类中添加方法 方法的定义形式:,访问修饰符 返回类型 方法名 ( 参数列表 ) / 方法的主体 ,通过return返回值,如果返回类型是void, 不需要用return返回值,实现两个整型数据的加法,public int sum(int a, int b)return a + b;,返回结果,方法的定义,创建和使用对象,使用new创建类的一个对象类名 对象名; /声明对象对象名=new 类名();/分配空间 使用对象:通过圆点运算符“ . ”访问对象的成员 对象名.属性 对象名.方法名(),Per

6、son p1; p1 = new Person(); 或 Person p1 = new Person();,p1.name = “张三“; /给属性赋值 p1.work(); /调用方法,该方法中的操作将被执行,public class PersonTest public static void main(String args)Person p1=new Person();p1.name=“Jack“;System.out.println(p1.name);p1.eat();p1.work(); ,运行结果:JackEatingWorking,创建和使用对象示例,方法调用示例,实现两个整型

7、数据的加法,public class Add public int sum(int a, int b)return a + b; ,Add myAdd = new Add();int sum = myAdd.sum(2, 3);,调用方法,实例化一个对象,返回结果,调用方法,类示例,用类的思想输出学校信息,类示例,public class School /定义学校的属性String schoolName; / 学校名称int studentNum; /学生数目 int teacherNum; /老师数目/ 定义学校的方法public void display() String info= sc

8、hoolName + “n“ +“学生:“+ studentNum + “人“ +“n“ +“老师:“+ teacherNum + “人“+ “n“;System.out.println(info); ,display()方法用于输出学校信息,public void display()/方法体 ,成员变量,public class InitialSchool public static void main(String args)School s1 = new School();s1.schoolName = “山西财专“;s1.studentNum = 5000;s1.teacherNum

9、= 350;s1.display(); ,创建和使用对象示例,创建“山西财专”对象,说一说什么运行效果?,上机练习,编写学生类,输出学生相关信息 编写测试类,测试学生类,/新建class一: public class Student String name;int age;String classnumber;String interest;public void information()System.out.println(“*学生个人信息*“);System.out.println(“ 学生姓名:“+name);System.out.println(“ 学生年龄:“+age);Syste

10、m.out.println(“ 所在班级:“+classnumber);System.out.println(“ 个人兴趣:“+interest); ,/新建class二: public class StudentText public static void main(String args) Student p1=new Student(); p1.name=“张三“; p1.age=20; p1.classnumber=“电商二班“; p1.interest=“睡觉“; p1.information();,上机练习,编写类Rectangle: 属性:width(矩形的宽度)、height

11、(矩形的长度) 方法: 求矩形的面积:double getArea(double w,double h) 输出矩形描述信息:void display()结果如 width=1.0,height=2.0,area=2.0 编写测试类Test进行测试:创建Rectangle对象,给对象的属性变量赋值,计算面积,并输出对象的描述信息。,public class Mj double width,height; public double getArea(double w,double h)return w*h;public void display()System.out.println(“heigh

12、t=“+height+“ width=“+width);,public class MjText public static void main(String args) Mj p1=new Mj(); p1.width=1.0; p1.height=2.0; p1.display(); double getArea=p1.getArea(1.0,2.0);System.out.println(“Area=“+getArea); ,小结,类和对象的主要区别? 类是抽象的概念,仅仅是模板,比如说:“人” 对象是一个你能够看得到、摸得着的具体实体,比如:“小布什”,小布什,普京,奥巴马,上机练习,

13、编写一个手机类,包含的属性和方法如下 图, 并编写测试类。,public class Phone String brand;String type;public void call()System.out.println(“型号为“+type+“的“+brand+“手机有通话功能“);public void getPower()System.out.println(“可充电“); ,public class PhoneText public static void main(String args) Phone p1=new Phone(); p1.brand=“三星“; p1.type=“S

14、GH-F258“; p1.call(); p1.getPower(); ,构造方法,构造方法是创建给定类的对象时调用的方法 构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值 构造方法必须满足以下语法规则:1、方法名与类名相同2、不写返回值类型 两种构造方法 空构造方法:在类中没有写构造方法时,Java在编译时自动加上一个空构造方法 带参数的构造方法:自行编写的构造方法,在类中写了带参构造方法后,Java不再自动添加空构造方法。,public class Person String name;int age;public static void main(String args)Pe

15、rson p1=new Person() ;p1.name=“张三”;p1.age=18;System.out.println(p1.name); System.out.println(p1.age); ,空构造方法的示例,带参构造方法的示例,public class Person String name;int age;public Person(String n,int a)name=n;age=a;public static void main(String args)Person p1=new Person(“张三”,18) ;System.out.println(p1.name);

16、System.out.println(p1.age); ,上机练习,编写一个手机类,包含的属性和方法如下图。要求包含带参数的构造方法。,public class Phone String brand;String type;public Phone(String b,String t)brand=b;type=t; public static void main(String args) Phone p1=new Phone(“三星“,“F258“); System.out.println(“品牌“+p1.brand);System.out.println(“型号“+p1.type);,pub

17、lic class Phone public void call()System.out.println(“正在通话“);public void getpower()System.out.println(“正在充电“); ,上机练习,编写一个桌子类,包含的属性和方法如下图,要求包含带参构造方法,在main方法中调用带参构造方法创建桌子对象。,成员变量和局部变量,成员变量:在类体的变量定义部分所定义的变量。局部变量:在方法体中定义的变量和方法的参数。 注意:(1)成员变量在整个类内都有效,局部变量只在定义它的方法内有效。(2)如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏。(3)可以使

18、用 this 关键字,调用被隐藏的成员变量,如:this.name ,this指代当前对象。,public class Person String name;int age;public Person(String name,int age)this.name=name;this.age=age;public static void main(String args)Person p1=new Person(“张三”,18) ;System.out.println(p1.name); System.out.println(p1.age); ,this 关键字的示例,当前类的对象,this 关键

19、字的示例,public class Pixel int x;int y;public Pixel (int x, int y) this.x = x;this.y = y;void display()System.out.println(“x=“+x+“t“+“y=“+y);public static void main (String args ) Pixel p = new Pixel(4,3);p.display(); ,运行结果: x=4 y=3,上机练习,编写一个类Book,代表教材: 具有属性:名称(title)、页数(pageNum) 具有带参数的构造方法:用来完成对象的初始化工

20、作 具有方法display,用来输出教材的名称和页数 编写测试类BookTest进行测试:初始化一个Book对象,调用Book对象的display方法,测试输出是否正确.,public class Book String title;int pageNum;public Book(String title,int pageNum)this.title=title;this.pageNum=pageNum;public void display()System.out.println(“title=“+title+“t“+“pageNum=“+pageNum+“页“);public static

21、 void main(String args)Book p1=new Book(“JAVA程序设计“,300);p1.display(); ,上机练习,编写类Rectangle: 属性:width(矩形的宽度)、height(矩形的长度) 方法: 构造方法:Rectangle(double w,double h) 求矩形的面积:double getArea(double w,double h) 求矩形的周长:double getPerimeter(double w,double h) 输出矩形描述信息:void display()结果如 width=1.0,height=2.0,area=2.

22、0,perimeter=6.0 编写测试类RectangleTest进行测试:创建Rectangle对象,计算面积和周长,并输出对象的描述信息。,构造方法重载,方法重载在一个类中,定义多个同名的方法,它们的参数个数或类型不同,称为方法的重载。 构造方法重载构造方法重载是方法重载的典型示例。,生活中的方法重载,类,方法,方法参数,方法实现,司机,轿车,巴士,火车,驾驶,启动、行驶、,等待乘客上车、启动、 行驶、到站停车、,正点发车、行驶、 到站停车、,如果用代码实现,我们需要三个方法,这些方法的方法名称相同,参数类型不同,方法重载的代码示例,java.io.PrintStream类的printl

23、n方法能够打印数据并换行,根据数据类型的不同,有多种实现方式,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方法,方法重载,构造方法重载,构

24、造方法重载(学生类,姓名和学校属性,自我介绍方法),public class Student private String name; private String school = “北京大学“; public Student(String name) this.name = name; public Student(String name, String school) this.name = name; this.school = school; public String introduction() return “大家好!我是“ + school + “的“ + name ; ,构

25、造方法重载,构造方法重载,通过调用不同的构造方法来表达对象的多种初始化行为,public class StudentTest public static void main(String args) Student student1 = new Student(“王芳“); System.out.println(student1.introduction();Student student2 = new Student(“张飞“, “南开大学“); System.out.println(student2.introduction(); ,大家好!我是北京大学的王芳 大家好!我是南开大学的张飞,

26、上机练习,编写学生类Student: 属性:姓名、性别、年龄、专业 要求构造方法重载 编写测试类,在main方法中测试构造方法。,编写一个类Book1,代表教材: 具有属性:名称(title)、页数(pageNum)、种类(type) 具有方法:display,用来在控制台输出每本教材的名称、页数、种类 具有两个带参构造方法:第一个构造方法中,设置教材种类为“计算机”(固定),其余属性的值由参数给定;第二个构造方法中,所有属性的值都由参数给定 编写测试类Book1Test进行测试: 分别以两种方式完成对两个Book1对象的初始化工作,并分别调用它们的display方法,看看输出是否正确,上机练

27、习,public class Book1 private String title; private int pagenum; String type=“计算机“; public Book1(String title,int pagenum) this.title=title; this.pagenum=pagenum; public Book1 (String title,int pagenum,String type) this.title=title; this.pagenum=pagenum; this.type=type; public String display() return

28、 “名称:“+title+“t“+“页数:“+pagenum+“t“+“种类:“+type; ,public class Text public static void main(String args)Book1 p1=new Book1(“java程序设计“,300);System.out.println(p1.display();Book1 p2=new Book1(“山楂树之恋“,168,“小说“);System.out. println(p2.display(); ,类可以将数据和方法封装在一起,以一个完整的形式呈现出来,其中数据表示类的属性,方法表示类的行为,分别称为成员变量和成员

29、方法。,可以设置成员的访问权限,实现类的封装性,为什么需要封装属性?,public class Person public String name; public int age; public String introduction() return “我是“ + name + “,我今年“+ age+“岁“; ,public class PersonText public static void main(String args) Person person1 = new Person(); person1.name = “王芳“; person1.age =-10; System.out

30、.println(person1.introduction(); ,如何封装属性,可以通过对属性的封装来实现属性满足一定的要求 封装,就是隐藏实现细节 将属性私有化,提供公有方法访问私有属性 通过这些公有方法访问私有属性 属性封装的具体实现 1、修改属性的可见性来限制对属性的访问 2、为每个属性创建一对赋值(setXxx)方法和取值 (getXxx) 方法,用于对这些属性的访问 3、在setXxx和getXxx方法中,加入对属性的存取限制,属性封装示例,public class Person private String name; private int age; public String

31、 getName() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) if (age0) System.out.println(“错误!年龄不能为负!“); this.age = 0; else this.age = age; ,package part; public class Lx3private String name; private int age; public String get

32、Name() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) if (age0) System.out.println(“错误!年龄不能为负!“); this.age = 0; else this.age = age; public String introduction() return “我是“ + name + “,我今年“+ age+“岁“; ,package part;public cl

33、ass Lx4 public static void main(String args) Lx3 person1 = new Lx3();person1.setName(“王芳“);person1.setAge(-10);System.out.println(person1.introduction();,具体步骤,上机练习,编写一个类Book,代表教材: 具有属性:名称(title)、页数(pageNum),其中页数不能少于100页,否则赋予默认值100 具有带参数的构造方法:用来完成对象的初始化工作,并要求对页数的最小值限制 为各属性设置赋值和取值方法,其中,给页数赋值的方法中要对页数作最

34、小值限制。 具有方法display,用来输出教材的名称和页数 编写测试类BookTest进行测试:初始化一个Book对象,调用Book对象的display方法,看看输出是否正确,然后对属性值进行修改,看看修改之后输出是否正确。,实例变量和类变量,成员变量可分为实例变量和类变量(静态变量)。类变量声明使用 static 关键字,与实例变量的存储有差别。,public class Person String name; /姓名,实例成员变量private int age; /年龄,实例成员变量static int count; /人数,类成员变量 ,static修饰的类变量示例,class Stu

35、dent private int sNo; /学号static int count=0; /人数public Student() count+;sNo=count; ,public class TestStudent public static void main(String args) Student s1=new Student();System.out.println(Student.count);Student s2=new Student();System.out.println(Student.count); ,运行结果:12,实例方法和类方法,成员方法可分为实例方法和类方法(静

36、态方法)。使用 static修饰的方法叫做类方法。,public static int howMany() /类方法 return count; /类方法只能访问类成员变量 ,类方法的两种调用方式 Person.howMany(); /通过类名调用类方法 p.howMany(); /通过对象调用类方法,static修饰的类方法示例,class Student private int sNo;static int count=0;public Student() count+;sNo=count; public static int getCount() return count; ,publi

37、c class TestStudent public static void main(String args) System.out.println(Student.getCount();Student s1=new Student();System.out.println(Student.getCount(); ,运行结果:01,静态方法使用类名调用,生活中,继承的例子随处可见,动物,食草动物,食肉动物,谁是父类? 谁是子类? 能说出继承的特点吗?,继承需要符合的关系:is-a,父类更通用、子类更具体,6.3 继承,生活中的继承,子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性

38、,巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?,汽车,类的继承是一种由已有类派生新类的机制。被继承的类称为父类。由父类创建的新类称为子类。子类自动继承父类的属性和方法,也可以根据需要进行修改,添加新的属性和方法。使用继承,可以有效实现代码复用。在Java语言中,用extends关键字来表示一个类继承了另一个类,例如:public class Student extends Person String school; ,类的继承,class A public int i , j; / 定义两个整型变量 public void setIJ ( int i, int j ) this.i = i

39、; this.j = j; class B extends A public int sum( ) return i + j ; / 把继承过来的 i, j相加 public class Test public static void main(String args)B b = new B( );b.setIJ (10, 20); /自动拥有父类的方法System.out.println( b.sum() ); ,运行结果:30,class SuperClass public void print() System.out.println(“我是父类“); class SubClass ex

40、tends SuperClass public void print() System.out.println(“我是子类“);public void display ( ) super.print(); /调用父类的print方法this.print(); /调用子类的print方法public class Test public static void main(String args) SubClass s = new SubClass();s.display(); ,运行结果: 我是父类 我是子类,super关键字,super是指代父类对象的关键字。当需要访问被隐藏的父类中的同名变量或

41、方法时,可以在子类中使用关键字super 作前缀,指明调用父类的成员变量或方法。super( )表示调用父类的构造方法super.f( )表示调用在父类中声明的方法f( )。super.number表示调用父类中的成员变量number 。,编写父类,一般父类中定义一些通用的属性与方法 编写子类,使用 extends 关键字继承父类,继承的JAVA实现,继承父类中的原始成员:当子类中未定义出该成员时将自动采用继承。 重定义父类中的成员:子类可以重定义(隐藏)父类的同名成员变量。当父类中的某些成员方法不再适合子类的需要时,在子类中应重写(覆盖)父类的同名方法。 扩充增强子类功能:当子类要求具有新的

42、功能时,应添加出该功能(新添新的成员)。,继承示例,开发教师类,其中教师分为Java教师和.NET教师,各自的要求如下: Java教师 属性:姓名、所属系部 方法:授课(步骤:打开MyEclipse、知识点讲解、总结)、 自我介绍 .NET教师 属性:姓名、所属系部 方法:授课(步骤:打开Visual studio 2005、知识点讲解、总结)、自我介绍,Java教师是教师吗? .NET教师是教师吗?,public class Teacher private String name; / 教师姓名 private String dept; / 所在系部 public Teacher(Strin

43、g myName,String myDept) name = myName; dept = myDept; public void giveLesson() System.out.println(“知识点讲解“); System.out.println(“课堂总结“); public void introduction() System.out.println(“大家好!我是“+ dept + “的“ + name + “。“); ,把相同的代码抽取到父类中,继承示例,public class JavaTeacher extends Teacher public JavaTeacher (St

44、ring myName, String myDept) super(myName, myDept); public void giveLesson() System.out.println(“启动 MyEclipse 6.0“); super.giveLesson(); ,public class NetTeacher extends Teacher public NetTeacher (String myName, String myDept) super(myName, myDept); public void giveLesson() System.out.println(“启动 Vis

45、ual Studio 2005“); super.giveLesson(); ,子类自动继承父类的属性和方法,可以减少重复代码,继承示例,由于giveLesson()方法与父类的实现有所不同,因此重写该方法,public class TeacherTestpublic static void main(String args)JavaTeacher jt=new JavaTeacher(“李飞“,“计算机系“);jt.introduction();jt.giveLesson();NetTeacher nt=new NetTeacher(“王刚“,“计算机系“);nt.introduction(

46、);nt.giveLesson();,继承示例,一切类的“祖先”Object,在Java 中,所有的Java类都直接或间接地继承了java.lang.Object类在Java中,只允许单继承,即仅允许每个类有一个父类,但一个类可以有多个子类。,public class MyObject / ,public class MyObect extends Object / ,上机练习,请编码实现动物世界的继承关系: 动物(Animal)具有行为:吃(eat)、睡觉(sleep) 动物包括:兔子(Rabbit),老虎(Tiger) 这些动物吃的行为各不相同(兔子吃草,老虎吃肉),但睡觉的行为是一致的。

47、 编写Animal类,包括eat()和sleep()方法,Rabbit类和Tiger类继承Animal,重写父类的eat()方法,并编写测试类AnimalTest,在main方法中进行测试。,public class Animal private String name; public Animal(String myName) name = myName;public void givelesson()System.out.println(“睡觉“);public void introduction() System.out.println(“这种动物是“+ name); ,public c

48、lass AnimalTextpublic static void main(String args)Rabbit rt=new Rabbit(“兔子“);rt.introduction();rt.giveLesson();Tiger tr=new Tiger(“老虎“);tr.introduction();tr.giveLesson(); ,public class Rabbit extends Animal public Rabbit(String myName) super(myName); public void giveLesson()System.out.println(“兔子吃草!“);super.givelesson(); ,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报