Java程序设计基础与实践 第4章 继承与多态.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Java程序设计基础与实践 第4章 继承与多态.ppt》由会员分享,可在线阅读,更多相关《Java程序设计基础与实践 第4章 继承与多态.ppt(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章 继承与多态Java类间继承的实现方法Java继承中变量与方法的隐藏和覆盖问题this和super关键字的使用Java多态性的含义4.1.1 继承性 创建子类Java中,使用关键字extends实现继承,格式如下:类修饰符class 类名extends 父类名 implements 接口列表/类声明 继承而得到的类称为子类,被继承的类称为父类、基类或超类。Java不支持多重继承,即一个类从多个父类派生的能力。子类可以继承父类中所有可被子类访问的成员变量和成员方法。所有的类都是通过直接或间接地继承java.lang.Object类得到的。例如:例如:class People String
2、id,name;int age;People()id=00000;name=null;age=0;void setName(String name)this.name=name;String getName()return name;public class Student extends People /public class Student extends People /定义定义Student类,继承类,继承People类类 String number;/String number;/定义自己的成员变量:学号定义自己的成员变量:学号 public static void main(St
3、ring args)Student s=new Student();/Student s=new Student();/创建对象创建对象 s.age=20;/s.age=20;/继承父类成员变量继承父类成员变量 s.number=15;/s.number=15;/自己的成员变量自己的成员变量 s.setName(s.setName(黎明黎明);/继承父类的成员方法继承父类的成员方法 System.out.println(System.out.println(学号:学号:+s.number);/输出信息输出信息 System.out.println(System.out.println(姓名:姓
4、名:+s.getName();System.out.println(System.out.println(年龄:年龄:+s.age);对象的上转型对象上转型(Upercase)对象,即将子类实例化的对象的引用赋给用父类声明的变量。即定义了子类对象,但把这个对象的引用放到父类的对象中。例如,假设A类是B类的父类A a;A=new B();或A a;B b=new B();a=b;称这个父类对象a是子类对象b的上转型对象。例如:例如:class Peopleprotected String name=protected String name=张三张三;protected int age,numb
5、er;String getName()return name;protected String getInfo(String s,int a,int n)name=s;age=a;number=n;return return 父类姓名:父类姓名:+name+n+父类年龄:父类年龄:+age+n+父类工号:父类工号:+number+n;class Student extends Peopleprotected String name=protected String name=李四李四;/变量的隐藏变量的隐藏protected String getInfo(String s,int a)name
6、=s;age=a;return return 子类姓名:子类姓名:+name+n+子类年龄:子类年龄:+age+n;protected String getInfo(String s,int a,int n)/protected String getInfo(String s,int a,int n)/方法的重写方法的重写name=s;age=a;number=n;return return 子类姓名:子类姓名:+name+n+子类年龄:子类年龄:+age+n+子类工号:子类工号:+number+n;public static void main(String args)People p=ne
7、w Student();/pPeople p=new Student();/p为上转型对象为上转型对象/System.out.println(p.getInfo(p.getName(),20);/非法,上转型对象不可以访问子类新增成员非法,上转型对象不可以访问子类新增成员System.out.println(p.getInfo(p.getName(),40,10000);/访问子类重写的方法访问子类重写的方法,隐藏的变量隐藏的变量Student s=(Student)p;/强制转换为子类对象,可以访问自了新增的成员方法强制转换为子类对象,可以访问自了新增的成员方法System.out.prin
8、tln(s.getInfo(s.getName(),20);隐藏和覆盖隐藏就是子类隐藏了父类的变量或方法,那么,子类不能访问父类被隐藏的变量或方法。Java中变量在继承时的覆盖和隐藏规则为:父类的实例变量和静态变量能被子类的同名变量隐藏。局部变量和各种参数永远不会被隐藏。class ParentClass private static String privateField=private static String privateField=父类变量父类变量-private;/*friendly*/String friendlyField=/*friendly*/String friendl
9、yField=父类变量父类变量-friendly;protected static String protectedField=protected static String protectedField=父类变量父类变量-protected static;protected String publicField=protected String publicField=父类变量父类变量-public;public String getPrivateFieldValue()return privateField;public class SubClass extends ParentClass
10、 private String privateField=private String privateField=子类变量子类变量-private;/*friendly*/String friendlyField=/*friendly*/String friendlyField=子类变量子类变量-friendly;protected static String protectedField=protected static String protectedField=子类变量子类变量-protected static;public String publicField=public Strin
11、g publicField=子类变量子类变量-public;public String getPrivateFieldValue()/System.out.println(super.publicField);return privateField;public static void main(String args)/输出下列三种情况中变量的值输出下列三种情况中变量的值 /ParentClass/ParentClass类型,类型,ParentClass对象对象 ParentClass parentClass=new ParentClass();System.out.println(Pare
12、ntClass parentClass=new ParentClass(););System.out.println(parentClass.getPrivateFieldValue();System.out.println(parentClass.friendlyField);System.out.println(parentClass.protectedField);System.out.println(parentClass.publicField);System.out.println();/ParentClass /ParentClass类型,类型,SubClass对象对象 ,上转型
13、对象,上转型对象 ParentClass subClass=new SubClass();System.out.println(ParentClass subClass=new SubClass(););System.out.println(subClass.getPrivateFieldValue();System.out.println(subClass.friendlyField);System.out.println(subClass.protectedField);System.out.println(subClass.publicField);System.out.println(
14、);/SubClass /SubClass类型,类型,SubClass对象对象 SubClass subClazz=new SubClass();System.out.println(SubClass subClazz=new SubClass(););System.out.println(subClazz.getPrivateFieldValue();System.out.println(subClazz.friendlyField);System.out.println(subClazz.protectedField);System.out.println(subClazz.publicF
15、ield);方法的隐藏和覆盖class Parent public static String kind=javastudy.extendsstudy.parent;public static int age=50;public String name=Parent;/静态方法,返回包名静态方法,返回包名 public static String getKind()System.out.println(parent System.out.println(parent的的getKind()方法被调用了方法被调用了);return kind;/静态方法,返回年龄静态方法,返回年龄 public s
16、tatic int getAge()System.out.println(Parent System.out.println(Parent的的getAge()方法被调用了方法被调用了);return age;/实例方法,返回姓名实例方法,返回姓名 public String getName()System.out.println(Parent System.out.println(Parent的的getName()方法被调用了方法被调用了);return this.name;/子类子类 class Child extends Parent public static String kind=j
17、avastudy.extendsstudy.child;public int age=25;public String name=child;/隐藏父类静态方法隐藏父类静态方法 public static String getKind()System.out.println(child System.out.println(child的的getkind()方法被调用了方法被调用了);return kind;/获取父类包名获取父类包名 public static String getParentKind()return Parent.kind;/覆盖父类实例方法覆盖父类实例方法 public S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计基础与实践 第4章 继承与多态 Java 程序设计 基础 实践 继承
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内