Java面向对象编程进阶.ppt
《Java面向对象编程进阶.ppt》由会员分享,可在线阅读,更多相关《Java面向对象编程进阶.ppt(42页珍藏版)》请在三一办公上搜索。
1、第5章 Java面向对象编程进阶,5.1 内部类和匿名类(略)5.2 抽象类 5.3 继承 5.4 包 5.5 接口,abstract class Shape/说明一般二维图形抽象类 abstract double area();/计算图形面积的方法 abstract void draw();/绘制图形的方法,有时,由于对象高级抽象的需要,希望类只需要说明方法首部,而不需要或不可能说明其方法体,其方法体只能由其子类来完成,这样的类需要使用abstract关键字修饰,这种类被称为抽象类。抽象类不能创建任何对象,抽象类只是用来由其子类继承。继承抽象类的子类比它的父类更加具体化、特殊化。例5-1 抽
2、象类Shape,5.2 抽象类,class Rectangle extends Shape/矩型类Rectangle继承了Shape类 int width;/矩形的宽 int length;/矩形的长 punlic double area()return width*length/矩形类实现了Shape类的抽象方法area()public void draw()/这里要实现Shape类的抽象方法draw(),5.3 继承,继承概述 继承语法格式 子类对父类成员重载 null,this,super 多态性 final类(最终类),在Java编程语言中,通过继承可利用已有的类,并扩展它的属性和方法
3、。这个已有的类可以是语言本身提供的、其他程序员编写的或程序员原来编写的。如果在声明类A时,指明类A继承了类B(类B是一个已定义了的类),则类A通常就拥有了类B的成员变量和方法。此时,类B称为类A的父类(superclass),父类也称为超类或基类;类A称为类B的子类(subclass),子类也称为派生类。Object类是Java中所有类的父类,也就是说Java中的类直接或间接有Object类派生而来。Java中实行单继承,即一个类只能有一个父类。,5.3.1 继承概述,一个类只可继承一个父类,但一个类可以有被多个子类继承。因而类之间的关系就形成了所谓的树形层次结构:,类A,类C1n,类C11,
4、类Bm,类B2,类B1,类Cm1,类Cmn,在Java中,类是Java所有类的父类。,类继承语法形式如下:修饰符 class SubClassName extends SupperClassName extends是继承关键词。SubClassName是新的子类名,SupperClassName是继承的父类名。父类名是必需的,而且只能有一个,因为Java中实行单继承。父类名所指定的类必须是在当前编译单元中可以访问的类,否则会产生编译错误。,继承语法格式,子类的特性:子类拥有其父类的所有属性和方法。但父类中说明为private的属性和方法,子类不可直接访问。子类可以对父类的方法覆盖或重载。,例.
5、5-2子类与父类,class A private int a;protected int b;public int c;public void setA(int aa)a=aa;public int getA()return a;class B extends A int d;public static void main(String args)B b1=new B();b1.setA(10);b1.b=20;b1.c=30;b1.d=b1.getA()+b1.b+b1.c;System.out.print(b1.d);,子类可以对父类的方法覆盖或重载。方法覆盖:子类的方法首部与父类的方法首
6、部相同,但是子类重新实现了该方法。方法重载:Java中方法可重载,就是方法名相同但形参列表不同之方法。子类的方法对父类的方法也可重载。,5.3.3 子类对父类成员重载,如果子类声明了一个与父类的成员变量同名的成员变量,则称父类的该成员变量被隐藏(Hiding),如果子类声明了一个与父类的成员方法同名的成员方法,则称父类的该成员方法被重写(Overriding)。关键字this和super分别用来指明子类和父类中同名的成员变量和方法。当父类的成员变量、子类的成员变量和类的对象方法使用的局部变量三者同名,或其中两个同名时,可以使用关键字this和super来指定所要使用的变量。继承是面向对象编程的
7、主要优点之一,它对如何设计Java类有着直接的影响。继承有如下几点好处:,(1)它可以利用已有的类来创建自己的类,只需要指出自己的类和已有的其它的类有什么不同即可,而且还可以动态访问其它有关的类中的信息。(2)通过继承,可以利用Java类库所提供的丰富而有用的类,这些类都已经被很好地实现。(3)当设计很大的程序时,继承可以使程序组织得更加层次清晰,有利于程序设计和减少错误的发生。,例5-3 子类与父类的继承关系,public class Point/定义Point类 int x;int y;,public Point()/构造方法,构造原点(0,0)x=0;y=0;public Point(i
8、nt X,int Y)/构造方法,按给定的X、Y 值 x=X;y=Y;/构成一个点(X,Y)public double distance()/定义方法,求点到坐标原点的距离 return Math.sqrt(x*x+y*y);/调用Math类的方法sqrt()public static void draw()/类方法draw(),画点 System.out.println(Point:a point.);,class ColorPoint extends Point int color;public static void draw()/复盖了父类的draw()方法 System.out.pr
9、intln(“ColorPoint:a color point.”);class MapPoint extends ColorPoint/定义类,继承ColorPoint类/类Object、Point均是MapPoint的父类,但都不是直接父类String name;/地图上的点有自己的名字,如城市名 public static void draw()/复盖了父类的draw()方法 System.out.println(MapPoint:a map color point.);,public class SuperSub public static void main(String args)
10、Point.draw();ColorPoint.draw();MapPoint.draw();,此程序运行后将输出如下结果:Point:a point.ColorPoint:a color point.MapPoint:a map color point.,null、this、super,Java语言规范中,每个类均有这样3个对象:null、this、super null“空”变量,表示这个对象不存在相应的实例 例如:Rectangle rect=null;当一个对象不再有用时,应当清除它以释放所占用的内存空间,这只要赋予它null即可。即如:rect=null;,this 代表对象本身 在类
11、的方法中,如果要引用的变量名或方法名的成员变量名或成员方法名相同,则可通过使用this 来代表对象本身,即引用对象自身。super 代表父类 当子类中有与父类同名的变量或方法时,可加上super限定词来指明是对父类的变量或方法的引用。下面是this和super是使用的例子。,class Rectangle int width,length;Rectangle(int width,int length)/构造方法 this.width=width;/this代表所创建的对象 this.length=length;public void drawRect()System.out.println(t
12、his is Rectangle!);,例5-4 用this表示引用自身,上面这个例子中,用this表示引用对象本身。,在构造方法中,可以使用super来引用父类的构造方法。例5-5 用super引用父类的构造方法,class fillRectangle extends Rectanglepublic fillRectangle(int w,int num)/构造方法 super(w,num);/调用父类的构造方法 private String makeString(char ch,int num)StringBuffer str=new StringBuffer();for(int i=nu
13、m;i0;i-)str.append(ch);return str.toString();,在这个类的构造方法中并没有写新的程序,而是调用了父类的构造函数,用于初始化实例变量。,public void drawRect()for(int i=length;i0;i-)/用字符“#”绘制(填满)一个矩形 System.out.pringln(makeString(#,width);,例.5-6 用 super 指明引用父类的变量,class A String str=aaaaa;class B extends A String str=bbbbb;void f()System.out.print
14、ln(父类变量str:+super.str);System.out.println(子类变量str:+str);public static void main(String args)B b1=new B();b1.f();,例.5-7 对象变量、静态变量的继承。,class A static int a;int b;class B extends Apublic static void main(String args)A.a=10;B.a=20;System.out.println(A.a=+A.a+,B.a=+B.a);A a1=new A();B b1=new B(),b2=new B
15、();a1.b=3;b1.b=4;b2.b=5;System.out.println(a1.b);System.out.println(b1.b);System.out.println(b2.b);,final修饰符可以定义一个不能被继承的类,即不能再有子类。类就是final类的一个例子,它是最终的类。final修饰符通常是出于安全的目的而使用的,因为不能继承final类,人们就不能重载或覆盖它的任何方法。如果允许一个类被继承,其被重载或覆盖的方法可能会被改写。保证某个特定的方法在类层次关系上的某层以后只有一个定义,这对于那些安全性非常关键的类是非常必要的。无论是用于修饰变量、方法还是类,fi
16、nal关键字的目的都是一样的:增强代码的安全性。例4.8 final类说明final class EndClass extends SupperClass,final类(最终类),包说明 包的层次结构 包的使用,5.4 包,包是为了解决设计较大规模的程序而引入的概念。一个大的系统,往往包含多种对象,需要多个类来描述。这些类以逻辑方式组合在一起,形成了所谓的包。使用包可提供控制访问的范围。类、方法缺省访问权限时,就只可在它所属的包中被访问,说明为public的才可在其他包中被访问。一个Java程序可以由多个包组成。一个包可由一个或多个源程序文件(.java文件)构成,有多个源程序文件时要分别建立
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面向 对象 编程 进阶
链接地址:https://www.31ppt.com/p-6510321.html