欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    面向对象特性精选文档.ppt

    • 资源ID:44738764       资源大小:1.26MB        全文页数:32页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    面向对象特性精选文档.ppt

    面向对象特性本讲稿第一页,共三十二页本章内容this 关键字static 关键字package 和 import 语句 类的继承访问控制方法的重写Object类对象转型多态抽象类接口本讲稿第二页,共三十二页this 关键字在类的方法定义中使用的 this 关键字代表使用该方法的对象使用该方法的对象的引用。当必须指出当前使用方法的对象是谁时要使用this。有时使用this可以处理方法中成员变量和参数重名的情况。public class Leafpublic class Leaf int i=0;int i=0;public Leaf(int i)this.i=i;public Leaf(int i)this.i=i;Leaf increament()Leaf increament()i+;i+;return this;return this;void print()System.out.println(i=+i);void print()System.out.println(i=+i);public static void main(String args)public static void main(String args)Leaf leaf=new Leaf(100);Leaf leaf=new Leaf(100);leaf.increament().increament().print();leaf.increament().increament().print();本讲稿第三页,共三十二页static 关键字静态成员变量在不创建类得对象的情况下,也可以使用,它是所有对象共有的变量,普通成员变量只有在创建了类的对象后才能被使用,与此相反,静态变量可以不先创建对象而直接使用。静态变量的声明如下:static int a;类.a=10;对象.a=20;本讲稿第四页,共三十二页public class Test public class Test static int static int a;a;int b;int b;public static void main(String args)public static void main(String args)Test.a=10;Test t1=new Test();new Test();Test t2=new Test();new Test();System.out.println(t1.a);t1.a=20;System.out.println(t1.a);t2.a=30;System.out.println(Test.a);本讲稿第五页,共三十二页静态方法只有在对象存在的条件下,我们才可以用成员变量和方法。然而,静态方法则不需要首先创建对象,可以直接调用它,在使用静态方法的时候一定要记住不可以在静态的方法中调用非静态的变量,如下程序:public class Test int a;static void setA(int b)a=b;public static void main(String args)Test.setA(10);本讲稿第六页,共三十二页静态变量与静态方法到底在什么方法中才能使用呢?如下程序 public class Test static int a;static void hello()System.out.println(您好.);static void setA(int b)a=b;hello();void printA()System.out.println(a);hello();public static void main(String args)Test.setA(100);Test t=new Test();t.printA();本讲稿第七页,共三十二页package 和 import语句为便于管理大型软件系统中数目众多的类,为便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,解决类的命名冲突问题,Java引入包引入包(package)机制,提供类的多重类命名空间。)机制,提供类的多重类命名空间。本讲稿第八页,共三十二页package 和 import语句package 语句作为 Java 源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。它的格式为:package pkg1.pkg2.pkg3;Java编译器把包对应于文件系统的目录管理,package语句中,用.来指明包(目录)的层次,例如使用语句package com.cstp;则该文件中所有的类位于.comcstp 目录下本讲稿第九页,共三十二页如果将一个类打包,则使用该类时,必须使用该类的全名(例如:com.cstp.MyClass),Java编译器才会在找到该类。也可以使用 import 在文件的开头引入要使用到的类;例如:可以不需要用import语句直接使用 java.lang 包中的类。import com.cstp.MyClass;import java.util.*;/引入引入java.util包中所有的类包中所有的类 .MyClass myClass=new MyClass();/可以直接使用类名可以直接使用类名 .本讲稿第十页,共三十二页Package import 总结如果想将一个类放入包中,在这个类源文件第一句话写package必须保证该类的class文件位于正确目录下另外的类想访问的话:写全名引入*具体类名访问位于同一个包中的类不需要引用本讲稿第十一页,共三十二页类的继承与权限控制Java 中使用 extends 关键字实现类的继承机制通过继承,子类自动拥有了基类(superclass)的所有成员(成员变量和方法)。Java只支持单继承,不允许多继承:一个子类只能有一个基类 一个基类可以派生出多个子类例子:TestExtends.java 本讲稿第十二页,共三十二页访问控制Java权限修饰符 public protected private 置于类的成员定义前,用来限定其他对象对该类对象成员的访问权限。对于class的权限修饰只可以用 public 和 default。public类可以在任意地方被访问default类只可以被同一个包内部的类访问修饰符修饰符类内部类内部同一个包同一个包子类子类任何地方任何地方privateYesdefault|packageYesYesprotectedYesYesYespublicYesYesYesYes本讲稿第十三页,共三十二页方法的重写(OverWrite OverRide)在子类中可以根据需要对从基类中继承来的方法进行重写。重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。重写方法不能使用比被重写方法更严格的访问权限。例子:TestOverWrite.java本讲稿第十四页,共三十二页super 关键字在在JavaJava类中使用类中使用supersuper来引用基类的成分;例如:来引用基类的成分;例如:class FatherClass class FatherClass public int value;public int value;public void f()public void f()value=100;value=100;System.out.println System.out.println (FatherClass.value=+value);(FatherClass.value=+value);class ChildClass extends FatherClass class ChildClass extends FatherClass public int value;public int value;public void f()public void f()super.f();super.f();value=200;value=200;System.out.println System.out.println (ChildClass.value=+value);(ChildClass.value=+value);System.out.println(value);System.out.println(value);System.out.println(super.value);System.out.println(super.value);本讲稿第十五页,共三十二页继承中的构造方法1、子类的构造过程中必须必须调用其基类的构造方法。2、子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。3.如果使用super,必须写在子类构造方法的第一行。4.如果子类的构造方法中没有显示地调用基类构造方法,则系统默认调用基类无参数的构造方法。如果子类的构造方法中没有显示地调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。TestSuperSub.java本讲稿第十六页,共三十二页Object类 ObjectObject类是所有类是所有JavaJava类的根基类类的根基类如果在类的声明中未使用如果在类的声明中未使用extendsextends关键字指明其基类,则默认基类为关键字指明其基类,则默认基类为ObjectObject类类 public class Person public class Person.等价于:等价于:public class Person extends Object public class Person extends Object.本讲稿第十七页,共三十二页对象转型一个基类的引用类型变量可以“指向”其子类的对象。一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。可以使用 引用 变量 instanceof 类名 来判断该引用型变量所所“指向指向”的对象的对象是否属于该类或该类的子类。本讲稿第十八页,共三十二页对象转型实例(1)class Animal class Animal public String name;public String name;Animal(String name)Animal(String name)this.name=name;this.name=name;class Cat extends Animal class Cat extends Animal public String eyeColor;public String eyeColor;Cat(String n,String c)Cat(String n,String c)super(n);eyeColor=c;super(n);eyeColor=c;Class Dog extends Animal Class Dog extends Animal public String furColor;public String furColor;Dog(String n,String c)Dog(String n,String c)super(n);furColor=c;super(n);furColor=c;本讲稿第十九页,共三十二页对象转型实例(2)public class Test public static void main(String args)Animal a=new Animal(name);Cat c=new Cat(catname,blue);Dog d=new Dog(dogname,black);System.out.println(a instanceof Animal);/true;System.out.println(c instanceof Animal);/true;System.out.println(d instanceof Animal);/true;System.out.println(c instanceof Cat);/true;a=new Dog(bigyellow,yellow);System.out.println(a.name);/bigyellowSystem.out.println(a instanceof Animal);/true;System.out.println(a instanceof Dog);/true;Dog d1=(Dog)a;/要加强制转换符System.out.println(d1.furColor);/yellow本讲稿第二十页,共三十二页多态多态源于希腊语,本意为“拥有多种形态”,在Java中,它指的是拥有相同形式,但根据不同的情形拥有不同机能的特性。例子,“数字+数字=数字”,然而,“String对象+数字=String对象”,根据不同的情形,“+”运算符拥有不同的功能,既“+”运算符具有多态性。还有实现了重载或重写的方法拥有相同的名字,但不同情形下,他们又拥有不同的功能,所以重载和重写也是一种多态。本讲稿第二十一页,共三十二页父类的引用指向子类对象 从对象的内存角度来理解试试.假设现在有一个父类Father,它里面的变量需要占用1M内存.有一个它的子类Son,它里面的变量需要占用0.5M内存.现在通过代码来看看内存的分配情况:Fatherf=newFather();/系统将分配1M内存.Sons=newSon();/系统将分配1.5M内存!因为子类中有一个隐藏的引用super会指向父类实例,所以在实例化子类之前会先实例化一个父类,也就是说会先执行父类的构造函数.由于s中包含了父类的实例,所以s可以调用父类的方法.Sons1=s;/s1指向那1.5M的内存.Fatherf1=(Father)s;/这时f1会指向那1.5M内存中的1M内存,即是说,f1只是指向了s中实例的父类实例对象,所以f1只能调用父类的方法(存储在1M内存中),而不能调用子类的方法(存储在0.5M内存中).Sons2=(Son)f;/这句代码运行时会报ClassCastException.因为f中只有1M内存,而子类的引用都必须要有1.5M的内存,所以无法转换.Sons3=(Son)f1;/这句可以通过运行,这时s3指向那1.5M的内存.由于f1是由s转换过来的,所以它是有1.5M的内存的,只是它指向的只有1M内存.本讲稿第二十二页,共三十二页抽 象 类用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。如果重写不了,应该声明自己为抽象。抽象类不能被实例化。抽象方法只需声明,而不需实现。例子:本讲稿第二十三页,共三十二页abstract class Animal abstract class Animal private String name;private String name;Animal(String name)Animal(String name)this.name=name;this.name=name;public abstract void enjoy();public abstract void enjoy();class Cat extends Animal class Cat extends Animal private String eyesColor;private String eyesColor;Cat(String n,String c)Cat(String n,String c)super(n);eyesColor=c;super(n);eyesColor=c;public void enjoy()public void enjoy()System.out.println System.out.println (猫叫声猫叫声.);.);本讲稿第二十四页,共三十二页Final关键字final修饰的变量的值不能够被改变final的成员变量final的局部变量(形参)final修饰的方法不能够被重写final修饰的类不能够被继承例子:本讲稿第二十五页,共三十二页接 口接口(interface)是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。接口定义举例:public interface Runner public interface Runner public static final int id=1;public static final int id=1;public void start();public void start();public void run();public void run();public void stop();public void stop();本讲稿第二十六页,共三十二页接口特性接口可以多重实现;接口中声明的属性默认为 public 的;也只能是 public 的;接口中只能定义抽象方法,而且这些方法默认为public的、也只能是public的;接口可以继承其它的接口,并添加新的属性和抽象方法。本讲稿第二十七页,共三十二页接 口多个无关的类可以实现同一个接口。一个类可以实现多个无关的接口。与继承关系类似,接口与实现类之间存在多态性。定义Java类的语法格式:class extends class extends implements ,*implements ,*本讲稿第二十八页,共三十二页接 口 举 例interface Singer interface Singer public void sing();public void sing();public void sleep();public void sleep();class Student implements Singer class Student implements Singer public void study()public void study()System.out.println(studying);System.out.println(studying);public void sing()public void sing()System.out.println(student is singing);System.out.println(student is singing);public void sleep()public void sleep()System.out.println(student is sleeping);System.out.println(student is sleeping);本讲稿第二十九页,共三十二页一个类可以实现多个无关的接口interface Singer interface Singer public void sing();public void sing();public void sleep();public void sleep();interface Painter interface Painter public void paint();public void paint();public void eat();public void eat();本讲稿第三十页,共三十二页class Teacher implements Singer,Painter private String name;public String getString()return name;Teacher(String name)this.name=name;public void teach()System.out.println(teaching);public void sing()System.out.println (teacher is singing);public void sleep()System.out.println (teacher is sleeping);public void paint()System.out.println (teacher is painting);public void eat()System.out.println (teacher is eating);本讲稿第三十一页,共三十二页第三章总结:对象和类的关系类(对象)之间的关系面向对象设计思想classnew引用的概念构造方法的概念方法重载构造方法重载thisstaticpackage&importprivate default protected publicextends 重载重写overloadoverwritefinalObject抽象类(abstract class)instanceof接口(interface)implements本讲稿第三十二页,共三十二页

    注意事项

    本文(面向对象特性精选文档.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开