java面向对象 教程课件

上传人:我*** 文档编号:144891600 上传时间:2020-09-14 格式:PPT 页数:36 大小:556KB
返回 下载 相关 举报
java面向对象 教程课件_第1页
第1页 / 共36页
java面向对象 教程课件_第2页
第2页 / 共36页
java面向对象 教程课件_第3页
第3页 / 共36页
java面向对象 教程课件_第4页
第4页 / 共36页
java面向对象 教程课件_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《java面向对象 教程课件》由会员分享,可在线阅读,更多相关《java面向对象 教程课件(36页珍藏版)》请在金锄头文库上搜索。

1、,第四章 面向对象-2,继承,上转型,多态,课程安排,访问权限,类有2种重要的成员:成员变量和方法。类创建的对象可以通过“.”运算符访问分配给自己的变量,也可以通过“.”运算符调用类中的实例方法和类方法。 类在定义声明成员变量和方法时,可以用关键字private、protected和public来说明成员变量和方法的访问权限,使得对象访问自己的变量和使用方法受到一定的限制。 1私有变量和私有方法 用关键字private修饰的成员变量和方法被称为私有变量和私有方法。 对于私有成员变量或方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法,访问权限,访问权限,cl

2、ass Employee private double salary=1800;/私有属性,类外无法访问 public void setSalary(double salary) if(salary1800 ,public class Example public static void main(String args ) Employee zhang=new Employee(); Employee wang=new Employee(); zhang.setSalary(100); System.out.println(zhang的薪水:+zhang.getSalary(); wang.

3、setSalary(3888); /wang.salary=88888;是非法的,因为对象wang已经不在Employee类中 System.out.println(wang的薪水:+wang.getSalary(); ,用某个类在另外的一个类中创建对象后,如果不希望该对象直接访问自己的变量(即通过“.”运算符来操作自己的成员变量),就应将该变量访问权限设置为private。 面向对象编程提倡对象应当调用方法来改变自己的属性,我们应当提供操作数据的方法,这些方法可以经过精心设计,使得对数据的操作更加合理。,2公有变量和公有方法 用public修饰的成员变量和方法被称为共有变量和共有方法,如:

4、class A public float weight; /weight被修饰为public的float型变量。 public float f(float a,float b) /方法 f是public方法。 ,访问权限,当我们在任何一个类中用类A 创建了一个对象后,该 对象能访问自己的public变量和类中的public方法。如: class B void g() A a = new A(); a.weight = 23f; /合法 a.f(3,4); /合法 ,3受保护的成员变量和方法 用protected修饰的成员变量和方法被称为受保护的成员变量和受保护的方法,如: class A pr

5、otected float weight; /weight被修饰为public变量。 protected float f(float a,float b) /f是public方法。 ,访问权限,假如B与A是同一个包中的类,那么,B类中的a.weight、a.f(3,4)都是合法的。 class B void g() Tom a = new Tom(); a.weight=23f; /合法 a.f(3,4); /合法 ,假设对象a是类A创建的,对象对成员的访问权限总结如下:,一个类可以把对象作为自己的成员变量,如果用这样的类创建对象,那么该对象中就会有其它对象,也就是说该对象将其他对象作为自己的

6、组成部分,或者说该对象是由几个对象组合而成 。,对象的组合,对象的组合,public class Rectangle private double x,y,width,height; public void setX(double x) this.x=x; public double getX() return x; . ,public class Circle private double x,y,radius; public void setX(double x) this.x=x; public double getX() return x; ,public class Geometry

7、 private Rectangle rect; private Circle circle; Geometry(Rectangle rect,Circle circle) this.rect=rect; this.circle=circle; public void setCirclePosition(double x,double y) circle.setX(x); circle.setY(y); ,生活中的继承,生活中,继承的例子随处可见,动物,食草动物,食肉动物,谁是父类? 谁是子类? 能说出继承的特点吗?,继承需要符合的关系:is-a,父类更通用、子类更具体,生活中的继承,子类具有

8、父类的一般特性(包括属性和行为),以及自身特殊的特性,巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?,汽车,请问:出租车包含哪些属性和行为呢?,子类与父类 继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。由继承而得到的类称为子类,被继承的类称为父类(超类)。,子类与父类,父类可以是自己编写的类也可以是java类库中的类。利用继承有利于实现代码的重复使用,子类只需要添加新的功能代码即可。Java不支持多重继承,即子类只能有一个父类。 使用关键字extends

9、来声明一个类是另外一个类的子类,格式如下: class 子类名 extends 父类名 . ,子类与父类,1继承的定义 所谓类继承就是子类继承父类的成员变量和方法作为自己的成员变量和方法,就好象它们是在子类中直接声明一样。当然,子类能否继承父类的变量和方法还有一定的限制。下面对其进行详细介绍。 2子类和父类在同一包中的继承性 如果子类和父类在同一个包中,那么子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法。继承的成员变量以及方法的访问权限保持不变。 3子类和父类不在同一包中的继承性 如果子类和父类不在同一个包

10、中,那么子类只能继承父类的protected、public成员变量和方法,继承的成员或方法的访问权限不变。,子类与父类,class Father private int moneyDollar=300; int moneyHK=200; int add(int x,int y) return x+y; ,class Son extends Father int moneyRMB=800; public void changMoneyHK(int x) moneyHK=x; public void changMoneyRMB(int x) moneyRMB=x; int subs(int x,i

11、nt y) return x-y; ,子类与父类,public class Example public static void main(String args) int a=5,b=3; Son son=new Son(); son.changMoneyHK(666); son.changMoneyRMB(5000); System.out.println(儿子的港币是继承的属性,当前的值是:+son.moneyHK); System.out.println(儿子的人民币是新增的属性,当前的值是:+son.moneyRMB); System.out.printf(减法是儿子新增的功能,%d

12、-%d等于%dn,a,b,son.subs(a,b); System.out.printf(加法是儿子继承的功能,%d+%d等于%dn,a,b,son.add(a,b); ,子类与父类,当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,如果子类的构造方法没有指明使用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。,子类对象的构造过程,1成员变量的隐藏 子类可以隐藏继承的成员变量,当在子类中定义和父类中同名的成员变量时,子类就隐藏了继承的成员变量,即子类对象以及子类自己声明定义的方法操作与父类同名的成员变量。,成员变量隐藏与方法重写,class A pu

13、blic double y=11.456789; public void f() y=y+1; System.out.printf(y是double型的变量,y=%fn,y); ,class B extends A int y=0; public void g() y=y+100; System.out.printf(y是int型的变量,y=%dn,y); ,class Example public static void main(String args ) B b=new B(); b.y=200; b.g(); /调用子类新增的方法 b.f(); /调用子类继承的方法 ,2方法重写 子类

14、也可以隐藏方法,子类通过方法重写来隐藏继承的方法。方法重写是指:子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同。子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。这时,如果子类想使用被隐藏的方法,必须使用关键字super,我们将在后面讲述super的用法。,成员变量隐藏与方法重写,class A protected double x=8.0,y=0.888888; public void speak() System.out.println(我喜欢NBA); public void cry() y=x+y; System.out.pri

15、ntf(y=%fn,y); ,class B extends A int y=100,z; public void speak() z=2*y; System.out.println(I love This Game); System.out.printf(y=%d,z=%d,y,z); ,class Example public static void main(String args ) B b=new B(); b.cry(); b.speak(); ,Super关键字有两种用法:一种用法是子类使用super调用父类的构造方法,另一种用法是子类使用super调用被子类隐藏的成员变量和方法。 1使用super调用父类的构造方法 子类不继承父类的构造方法,因此,子类如果想使用父类的构造方法,必须在子类的构造方法中使用并且必须使用关键字super来表示,而且super必须是子类构造方法中的第一条语句。,成员变量隐藏与方法重写,class A int x,y; A() x=100; y=200; A(int x,int y) this.x=x; this.y=y; ,class B extends A int z; B(int x,int y) super(x,y

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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