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

上传人:huo****ian 文档编号:252483926 上传时间:2024-11-16 格式:PPT 页数:23 大小:276.50KB
返回 下载 相关 举报
面向对象(类的继承和内部类)_第1页
第1页 / 共23页
面向对象(类的继承和内部类)_第2页
第2页 / 共23页
面向对象(类的继承和内部类)_第3页
第3页 / 共23页
点击查看更多>>
资源描述
标题,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象(类的继承和内部类),上讲回顾,初步让学生了解类和对象的概念,掌握java中类和对象的创建方式,构造函数,掌握方法的重载,本讲内容,掌握类的继承,this与super的引用,掌握static/final关键字用法,内部类,继承,已有类,属性和行为,新类,已有类属性和行为,+新增属性和行为,动物,允许重用已有类来构,造新类的特性,继承(inheritance),什么是继承(派生)?,子类自动的拥有父类中定义的属性和方法.,例如:猫生猫 狗生狗大象生大象,概念:,父类、基类、超类、,子类、派生类、衍生类,、类继承、类派生,允许通过已有类构造新类,实现了代码的,重用,在父类中定义相同的属性和方法,所有的子,类无须重新定义这些属性和方法,如:公共汽车、出租车、货车等都是汽车,,但它们是不同的汽车,除了具有汽车的共性外,,它们还具有自已的特点,我可以写一个汽车的类,,可以通过继承父类的汽车的所有共性。,继承,子类可以继承父类的一些属性和方法,那么它到底从父类继承了哪些东西呢?,当子类和父类位于同一包中,子类继承父类中 public、protected和默认访问级别的成员变量和成员方法。,当子类和父类不在同一包中:子类继承父类中public、protected访问级别的成员变量和成员方法。,类继承的实现,extends,关键字用于继承类。,声明一个继承父类的类的通常形式如下:,class subclass-name,extends,superclass,-name,/,类体,没有,extends,,,默认父类为,Object,只能有一个父类,即单继承,注意,被继承的类称为父类,继承父类的类称为子类,执行继承时,子类将获得父类的属性,并具有自身特有的属性。,类继承的实现,Person,String name,int age,String getInfo(),Student,String name,int age,String school,String getInfo(),String getSchool(),class Person,public String name;,public 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 Worker,extends,Person,public String Company;,public String getComany(),示例:Student.java,示例二,Person,String name,int age,String getInfo(),Student,String name,int age,String school,String getInfo(),String getSchool(),Worker,String name,int age,String Company,String getInfo(),String getCompany(),Person,是父类;定义了,name/age,两个属性,,getInfo,(),方法,Student/,Worder,分别是其的两个子类,除了已有的,name/age/,getInfo,以外,还有自己的特有的属性和方法,继承实例,例如:动物类派生两栖动物类和哺乳动物类,图形类派生出矩形类和圆类等等,猫类派生出山猫、家猫,见实例:exp1.java,继承的特点,通过继承可以简化类的定义,实现代码的重用,JAVA,只支持单继承,,不允许多重继承。,可以有多层继承;类B继承类A;类C继承类B;,子类继承父类的成员变量和成员方法,但,不继承父类的构造函数,在子类的构造方法中可用,super(参数列表),调用父类的构造方法。,如果子类的构造方法中没有显示的调用父类构造方法,也没有使用this关键字调用自己的其他构造方法,那么在产生子类实例对象时,JVM自动调用父类无参数的构造方法,。,多层继承形成类层次结构,Person 类,Student 类,Worker类,小学生 类,中学生 类,大学生 类,IT业 工人类,其他业 工人类,IT-java-类,IT-C-类,IT业 其他 类,在一个分支上,位于下层的子类会继承上层所有直接或间接父类的属性和方法。,this引用,this的作用,1、区分类成员属性和方法的形参.,例:,class,Person,String,name,;,/名字,public,Person(String,name,),this,.,name,=,name,;,2、this关键字通常用于,return,语句中返回当前对象的引用。,见例子:Leaf.java,3、在构造方法中使用this来调用其它构造方法,关键字,this,与对象关联,它用于指示,当前对象,this引用,class Person,String name;/名字,int age;/年龄,public Person(String aa),this.name=aa;,System.out.println(name);,public Person(String 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(参数列表),说明:,构造方法的第一个语句,否则会收到编译程序的报错信息,在构造方法中用,this,只能调用另外一个构造方法,不能调用两个。,super,的使用,访问直接基类中被隐藏的数据成员,调用直接基类中被重写的成员方法,调用直接基类的构造方法,参考示例:Flower.java,见例:Student.java,static 关键字,static 可以用于修饰成员变量和成员方法以及类。,静态变量:所有此类实例可共享它,即在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间。直接可通过类名来访问该变量。,静态方法:通常在一个类中定义一个方法为static,那就是说无需实例化本类的对象,可直接通过类名来调用此方法。,静态的代码块:当Java虚拟机加载类时,就会执行该代码块。,static,静态,成员,定义静态成员变量:,static,类型,成员变量名,;,或,static,类型,成员方法名,;,在类载入时创建,可以被各实例对象共享,可直接通过“,类名.静态成员变量名,”的方式访问类的变量,可直接通过”,类名.静态成员方法名,”访问类的方法.,注意,:不能把方法体内变量声明为静态。,例如,class Person,static,int,age,=15;,static,void shout(),static关键字确定的变量、方法、类将在该,类被加载的时候创建且共享它,public class TestStatic,System.out.println(Person.age);,Person.shout();,理解static,定义一个类成员,通常情况下类成员必须通过它的类的对象访问.,如果一个成员被声明为static,这就能够在它的类的任何对象创建之前被访问;,方法和变量都可声明为static,声明为static的变量实质就是全局变量.,class StaticDemo,static 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可以用来修饰成员,方法,类。,修饰成员:,变量一旦被初始化便不可改变,相当于定义了一常量。,修饰方法:,final方法是在子类中不能被覆盖的方法,修饰类:,final类是无法被任何类继承的。,FinalTest.java,内部类(nested classes),将一个类定义置入另一个类定义中就叫作“内部类”。,类中定义的内部类特点,1、内部类可以,直接访问,外部类的成员,反之则不行。,2、内部类可以声明为,private或protected,。,3、内部类成员只有在内部类的范围之类是有效的。,private内部类调用方式:,在外部类的,方法中实例化内部类,,并调用内部类的方法,将内部类声明为非private的就可以通过外部类创建一个内部类的对象引用,并可通过该引用调用内部类自己定义的方法。,例如:,Outer.Inner in=outer.new Inner();,in.display();,class,Outer,int,outer_i,=100;,void test(),Inner in=new Inner();,in.display();,class,Inner,void display(),System.out.println(display:outer_i=+,outer_i,);,内部类,类中定义的内部类,1、Inner类是在Outer内部定义的,2、在Inner类中可以访问Outer类中,的成员属性outer_i;,3、在Outer类中可在方法test()中创建,内部类Inner的对象;,4、通过Outer类的对象调用test(),方法最终就可以执行Inner类中的方法,例子:InnerClassDemo.java,小结,掌握类的继承,掌握类的this/super/static关键字的用法,掌握final关键字用法,了解内部类的概念,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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