欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    java技术从入门到精通(孙鑫)学习笔记-Lesson2(面向对象下).doc

    • 资源ID:10613206       资源大小:73KB        全文页数:13页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    java技术从入门到精通(孙鑫)学习笔记-Lesson2(面向对象下).doc

    类的继承l 理解继承是理解面向对象程序设计的关键。l 在Java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。l 在Java中,不允许多继承。class Animalint weihght,height;void eat()System.out.println("animal eat");void sleelp()System.out.println("animal sleep");void breath()System.out.println("animal breath");class Fish extends Animalclass Integrationpublic static void main(String args)Animal an=new Animal();Fish fh=new Fish();an.breath();fh.breath();调用编译器的命令为: javac Animal.java调用执行的命令为: java Integration注 :编译器的对象是java文件 执行的对象是 包含main方法的那个类运行结果为: animal breath animal breath方法的覆盖l 在子类中定义一个与父类同名、返回类型、参数类型相同一个方法,称为方法的覆盖。l 覆盖发生在子类与父类之间。注:方法的重载发生在同一个类当中。class Animalint weihght,height;void eat()System.out.println("animal eat");void sleelp()System.out.println("animal sleep");void breath()System.out.println("animal breath");class Fish extends Animalvoid breath() /子类与父类的方法完全一致,发生覆盖。System.out.println("fish bubble");class Integrationpublic static void main(String args)Animal an=new Animal();Fish fh=new Fish();an.breath();fh.breath();运行结果为: animal breath fish bubble特殊变量superl 特殊变量super,提供了对父类的访问。l 可以使用super访问父类被子类隐藏的变量或覆盖的方法。l 每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。class Animalint weihght,height;void eat()System.out.println("animal eat");void sleelp()System.out.println("animal sleep");void breath()System.out.println("animal breath");class Fish extends Animalvoid breath()super.breath();System.out.println("fish bubble");class Integrationpublic static void main(String args)Animal an=new Animal();Fish fh=new Fish();an.breath();fh.breath();运行结果为: animal breath animal breath fish breathl 每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。class Animalint weihght,height;Animal()System.out.println("animal construct");void eat()System.out.println("animal eat");void sleelp()System.out.println("animal sleep");void breath()System.out.println("animal breath");class Fish extends AnimalFish() /这里的super()被隐藏了,实际上子类的构造方法的第一句都隐含地调用super()System.out.println("fish construct");void breath()/super.breath();System.out.println("fish bubble");class Integrationpublic static void main(String args)/Animal an=new Animal();Fish fh=new Fish();/an.breath();/fh.breath();运行结果为了: animal construct fish construct class Animal /发现编译后报错int weight,height;Animal(int weight,int height)System.out.println("animal construct");void eat()System.out.println("animal eat");void sleelp()System.out.println("animal sleep");void breath()System.out.println("animal breath");class Fish extends AnimalFish()/super(); /*编译报错。因为构造方法是不能继承的,所以调用父类的构造方法就不能用 Animal()的形式,这就得借助super()来调用了。默认情况下,子类创建的构造函数的第一条语句就会调用super()方法,super()方法即代表父类的构造方法。现在子类Fish的构造方法中默认调用的是super(),但却在父类中找不到这样的构造函数,因为父类中只存在带参数的构造方法,这样造成不匹配就会在编译的时候报错。要解决这个问题就得解决匹配的问题,应在子类Fish的构造方法中定义带参数的super()方法如: super(30,40) ,见下面的修改的程序*/System.out.println("fish construct");void breath()/super.breath();System.out.println("fish bubble");class Integrationpublic static void main(String args)/Animal an=new Animal();Fish fh=new Fish();/an.breath();/fh.breath();class Animalint weight,height;Animal(int weight,int height)System.out.println("animal construct");void eat()System.out.println("animal eat");void sleelp()System.out.println("animal sleep");void breath()System.out.println("animal breath");class Fish extends AnimalFish() super(40,50);System.out.println("f ish construct");void breath()/super.breath();System.out.println("fish bubble");class Integrationpublic static void main(String args)/Animal an=new Animal();Fish fh=new Fish();/an.breath();/fh.breath();运行结果为: animal construct fish construct-多态性l 通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法。class Animalint weight,height;Animal(int weight,int height)void eat()System.out.println("animal eat");void sleelp()System.out.println("animal sleep");void breath()System.out.println("animal breath");class Fish extends AnimalFish() super(40,50);void breath()System.out.println("fish bubble");class Integrationstatic void fn(Animal an)an.breath();public static void main(String args)Fish fh=new Fish();Animal an;an=fh;Integration.fn(an);运行结果为: fish bubble l 当我们将子类对象 的引用传递给声明为父类的一个对象变量,如果子类有的方法,就调用子类的方法,如果子类没有这个方法,那么就调用父类的方法。class Animalint weight,height;Animal(int weight,int height)void eat()System.out.println("animal eat");void sleelp()System.out.println("animal sleep");void breath()System.out.println("animal breath");class Fish extends AnimalFish() super(40,50);/*void breath()System.out.println("fish bubble");*/ /子类中没有定义breath()这个方法,子类会调用父类的breath()方法, /这就是运行结果显示为调用父类的breath()方法的根本原因。class Integrationstatic void fn(Animal an)an.breath();public static void main(String args)Fish fh=new Fish();Animal an;an=fh;Integration.fn(an);运行结果为: animal breath (子类继承了父类的breath()方法)操作符instanceof:用来判断一个对象是否是一个类的实例class Animalint weight,height;Animal(int weight,int height)void eat()System.out.println("animal eat");void sleelp()System.out.println("animal sleep");void breath()System.out.println("animal breath");class Fish extends AnimalFish() super(40,50);class Integrationstatic void fn(Animal an)an.breath();public static void main(String args)Animal an=new Animal(30,40); /注意:类Animal中的构造方法是带参数/的,这里初始化Animal对象时也要带上参数Fish fh=new Fish();if(an instanceof Animal)System.out.println("an is Animals instance");if(fh instanceof Fish)System.out.println("fh is fishs instance");运行结果为:an is Animals instance fh is Fishs instanceclass Animalint weight,height;Animal(int weight,int height)void eat()System.out.println("animal eat");void sleelp()System.out.println("animal sleep");void breath()System.out.println("animal breath");class Fish extends AnimalFish() super(40,50);class Integrationstatic void fn(Animal an)an.breath();public static void main(String args)Animal an=new Animal(30,40); /注意:类Animal中的构造方法是带参 / 的, 这里初始化对象Animal对象时也要带上参数Fish fh=new Fish();an=fh; /把子类对象赋给了父类对象,则父类的实例也成了子类的实例if(an instanceof Fish)System.out.println("an is Fishs instance");elseSystem.out.println("an isnt Fishs instance");if(an instanceof Animal)System.out.println("an is Animals instance");elseSystem.out.println("an isnt Animals instance");if(fh instanceof Animal)System.out.println("fh is Animals instance");elseSystem.out.println("fh isnt Animals instance");运行结果为: an is Fishs instance an is Animals instance fh is Animals instance-面向对象的程序设计l 问题:求一个长方形的周长和面积。以面向过程的程序设计方式思考:1、确定长方形周长和面积的算法。2、编写两个方法(函数)分别计算长方形的周长和面积。3、求周长的方法(函数)和求面积的方法(函数)需要两个参数,分别是长方形的长和宽。面向过程的程序设计代码:class Rectangle /保存为 Rectangle.java文件static int perimeter(int length,int width)return 2*(length+width);static int area(int length,int width)return length*width;public static void main(String args)System.out.println("perimeter="+Rectangle.perimeter(5,4);/由于定义的/是静态的方法,故可以直接用类名来调用。System.out.println("area="+Rectangle.area(5,4);/理同上运行结果为: perimeter=18 Area=20面向对象的程序设计l 问题:求一个长方形的周长和面积。以面向对象的程序设计方式思考:1、 一个长方形可以看成是一个长方形对象。2、 一个长方形有两个状态(长和宽)和两个行为(求周长和求积)。3、 将所有长方形的共性抽取出来,设计一个长方形类。4、 通过长方形对象的行为,就可以求出某个具体的长方形对象的周长和面积。class Rectangleint l,w;int perimeter()return 2*(l+w);int area()return l*w;public static void main(String args)Rectangle rec1=new Rectangle();Rectangle rec2=new Rectangle();rec1.l=4;rec1.w=6;System.out.println("perimeter of rec1="+rec1.perimeter();System.out.println("area of rec1="+rec1.area(); rec2.l=5; rec2.w=10; System.out.println("perimeter of rec2="+rec2.perimeter();System.out.println("area of rec2="+rec2.area();

    注意事项

    本文(java技术从入门到精通(孙鑫)学习笔记-Lesson2(面向对象下).doc)为本站会员(PIYPING)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

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




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

    三一文库
    收起
    展开