面向对象类的继承和内部类

上传人:无*** 文档编号:169701029 上传时间:2022-11-16 格式:PPT 页数:23 大小:304.52KB
收藏 版权申诉 举报 下载
面向对象类的继承和内部类_第1页
第1页 / 共23页
面向对象类的继承和内部类_第2页
第2页 / 共23页
面向对象类的继承和内部类_第3页
第3页 / 共23页
资源描述:

《面向对象类的继承和内部类》由会员分享,可在线阅读,更多相关《面向对象类的继承和内部类(23页珍藏版)》请在装配图网上搜索。

1、 初步让学生了解类和对象的概念 掌握java中类和对象的创建方式 构造函数 掌握方法的重载 掌握类的继承 this与super的引用 掌握static/final关键字用法 内部类已有类属性和行为新类已有类属性和行为+新增属性和行为动物动物允许重用已有类来构造新类的特性什么是继承(派生)?子类自动的拥有父类中定义的属性和方法.例如:猫生猫 狗生狗大象生大象 概念:父类、基类、超类、子类、派生类、衍生类、类继承、类派生允许通过已有类构造新类,实现了代码的重用,在父类中定义相同的属性和方法,所有的子类无须重新定义这些属性和方法如如:公共汽车、出租车、货车等都是汽车,公共汽车、出租车、货车等都是汽车

2、,但它们是不同的汽车,除了具有汽车的共性外,但它们是不同的汽车,除了具有汽车的共性外,它们还具有自已的特点,我可以写一个汽车的类,它们还具有自已的特点,我可以写一个汽车的类,可以通过继承父类的汽车的所有共性。可以通过继承父类的汽车的所有共性。子类可以继承父类的一些属性和方法,那么它到底从父类继承了哪些东西呢?当子类和父类位于同一包中,子类继承父类中 public、protected和默认访问级别的成员变量和成员方法。当子类和父类不在同一包中:子类继承父类中public、protected访问级别的成员变量和成员方法。extends关键字用于继承类。声明一个继承父类的类的通常形式如下:class

3、 subclass-name extends superclass-name /类体 没有没有extends,默认父类为,默认父类为Object 只能有一个父类,即单继承只能有一个父类,即单继承注意注意 被继承的类称为父类 继承父类的类称为子类 执行继承时,子类将获得父类的属性,并具有自身特有的属性。PersonString nameint ageString getInfo()StudentString nameint ageString schoolString getInfo()String getSchool()class Person public String name;publi

4、c int age;public void getInfo()class Student public String name;public int age;public String school;public void getInfo()public String getSchool()class Person public String name;public int age;public void getInfo()class Student extends Person public String school;public String getSchool()class Worke

5、r extends Person public String Company;public String getComany()示例:Student.javaPersonString nameint ageString getInfo()StudentString nameint ageString schoolString getInfo()String getSchool()WorkerString nameint ageString CompanyString getInfo()String getCompany()vPersonPerson是父类;定义了是父类;定义了name/agen

6、ame/age两个属性,两个属性,getInfogetInfo()()方法方法vStudent/Student/WorderWorder分别是其的两分别是其的两个子类,除了已有的个子类,除了已有的name/age/name/age/getInfogetInfo以外,还有自己以外,还有自己的特有的属性和方法的特有的属性和方法 例如:动物类派生两栖动物类和哺乳动物类图形类派生出矩形类和圆类等等猫类派生出山猫、家猫见实例:exp1.java 通过继承可以简化类的定义,实现代码的重用 JAVA只支持单继承,不允许多重继承。可以有多层继承;类B继承类A;类C继承类B;子类继承父类的成员变量和成员方法,但

7、不继承父类的构造函数 在子类的构造方法中可用super(参数列表)调用父类的构造方法。如果子类的构造方法中没有显示的调用父类构造方法,也没有使用this关键字调用自己的其他构造方法,那么在产生子类实例对象时JVM自动调用父类无参数的构造方法。Person 类Student 类Worker类小学生 类中学生 类 大学生 类 IT业 工人类其他业 工人类IT-java-类IT-C-类IT业 其他 类在一个分支上,位于下层的子类会继承上层所有在一个分支上,位于下层的子类会继承上层所有直接或间接父类的属性和方法。直接或间接父类的属性和方法。this的作用 1、区分类成员属性和方法的形参.例:class

8、 Person String name;/名字 public Person(String name)this.name=name;2、this关键字通常用于return语句中返回当前对象的引用。见例子:Leaf.java 3、在构造方法中使用this来调用其它构造方法v关键字关键字 this 与对象关与对象关联联v它用于指示它用于指示当前对象当前对象class Person String name;/名字名字int age;/年龄年龄public Person(String aa)this.name=aa;System.out.println(name);public Person(Strin

9、g aa,int age)this.name=aa;this.age=age;System.out.println(name);System.out.println(age);public Person()this(张三张三,22);/this(李四李四);/如果该语句不注释会不会有错呢如果该语句不注释会不会有错呢?class Student11 public static void main(String args)Person p=new Person();使用格式:this(参数列表)说明:构造方法的第一个语句,否则会收到编译程序的报错信息 在构造方法中用this只能调用另外一个构造方法

10、,不能调用两个。super的使用 访问直接基类中被隐藏的数据成员 调用直接基类中被重写的成员方法 调用直接基类的构造方法参考示例:Flower.java见例:见例:Student.java static 可以用于修饰成员变量和成员方法以及类。静态变量:所有此类实例可共享它,即在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间。直接可通过类名来访问该变量。静态方法:通常在一个类中定义一个方法为static,那就是说无需实例化本类的对象,可直接通过类名来调用此方法。静态的代码块:当Java虚拟机加载类时,就会执行该代码块。定义静态成员变量:static 类型 成员变量名;或 st

11、atic 类型 成员方法名;在类载入时创建 可以被各实例对象共享 可直接通过“类名类名.静态成员变量名静态成员变量名”的方式访问类的变量,可直接通过”类名类名.静态成静态成员方法名员方法名”访问类的方法.注意:不能把方法体内变量声明为静态。例如 class Personstatic int age=15;static void shout()static关键字确定的变量、关键字确定的变量、方法、类将在该方法、类将在该类被加类被加载的时候创建且共享它载的时候创建且共享它public class TestStatic System.out.println(Person.age);Person.sh

12、out();class StaticDemostatic int a=42;static int b=99;static void callme()System.out.println(“a=”+a);class StaticByName public static void main(String args)StaticDemo.callme();System.out.println(“b=”+StaticDemo.b);final可以用来修饰成员,方法,类。修饰成员:变量一旦被初始化便不可改变,相当于定义了变量一旦被初始化便不可改变,相当于定义了一常量。一常量。修饰方法:final方法是在

13、子类中不能被覆盖的方法方法是在子类中不能被覆盖的方法 修饰类:final类是无法被任何类继承的。类是无法被任何类继承的。FinalTest.java 将一个类定义置入另一个类定义中就叫作“内部类”。类中定义的内部类特点 1、内部类可以直接访问外部类的成员,反之则不行。2、内部类可以声明为private或protected。3、内部类成员只有在内部类的范围之类是有效的。private内部类调用方式:在外部类的方法中实例化内部类,并调用内部类的方法,将内部类声明为非private的就可以通过外部类创建一个内部类的对象引用,并可通过该引用调用内部类自己定义的方法。例如:Outer.Inner in=

14、outer.new Inner();in.display();class Outerint outer_i=100;void test()Inner in=new Inner();in.display();class Inner void display()System.out.println(display:outer_i=+outer_i);1 1、InnerInner类是在类是在OuterOuter内部定义的内部定义的2 2、在、在InnerInner类中可以访问类中可以访问OuterOuter类中类中的成员属性的成员属性outer_iouter_i;3 3、在、在OuterOuter类中可在方法类中可在方法test()test()中创建中创建内部类内部类InnerInner的对象;的对象;4 4、通过、通过OuterOuter类的对象调用类的对象调用testtest()()方法最终就可以执行方法最终就可以执行InnerInner类中的方法类中的方法例子:例子:InnerClassDemo.java 掌握类的继承 掌握类的this/super/static关键字的用法 掌握final关键字用法 了解内部类的概念

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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