- 0
- 0
- 约 31页
- 2017-06-15 发布于北京
- 举报
作业 编写一个类A,在其中编写4个方法,都叫add,分别实现:2个int数的相加;2个double类型数据的相加;1个int和一个double类型的相加;1个double和1个int的相加。 再编写一个主类Test,主方法中分别测试4个add方法。例如:System.out.println(A.add(4,3.9)); * Java java java java 已学: 类层次结构(类的定义) 对象的创建、使用 构造方法的定义和使用 类、属性和方法的修饰符 将学: 类的继承、方法的覆盖和重载 包、接口 子类、继承和多态 类的继承 定义类时用extends 关键字指明父类,建立继承关系。 子类父类同包 :可继承父类所有非private的属性和方法作为自己的成员。 子类和父类不同包:可继承父类所有非private、非友好(默认)的属性和方法作为自己的成员。 注: 如果一个方法的形参是父类对象, 则调用此方法时,可用子类对象作实参。 属性的隐藏 属性的隐藏:子类对从父类继承来的属性变量(成员变量)重新加以定义,此时可理解为父类属性被隐藏。 或者说,子类中定义的成员变量和父类中的同名,则父类的成员变量被隐藏。 //C.java class A{ int x1=10; float x2=2.0f; } class B extends A{ int x1=15; int x2=25; String x3=“hello”; } public class C{ public static void main(String[] args){ A p1=new A(); B p2=new B(); System.out.println(“A:”+p1.x1+“,”+p1.x2); System.out.println(“B:”+p2.x1 +“,” +p2.x2); }} 子类重新定义了x1和x2 输出结果 A:10,2.0 B: 15,25 方法的覆盖(重写) 子类中定义了与父类同名的方法(注意相同的方法定义头,只是方法体不同) 调用时区分: 子类对象调用的是自己的方法 当使用父类名/对象或super关键字 作前缀时,访问的是父类的方法。 方法的覆盖:子类重写父类同名方法的现象。 调用区分:谁调用就是谁的。 Rules About Overridden Methods ? Must have a return type that is identical to the method it overrides ? Cannot be less accessible than the method it overrides ? Must throw exceptions that are same type as the method being overridden //C.java class A{ int fun(int a, int b){ return a*b; } } class B extends A{ int fun(int a, int b){ return a+b; } } public class C{ public static void main(String[] args){ A p1=new A(); B p2=new B(); System.out.println(p1.fun(3,4)); System.out.println(p2.fun(3,4)); }} 方法头相同 方法体不同 访问控制不能缩小 12 7 null、this、super Java系统默认:每个类都有三个量: null —— 空引用 this ——当前对象的引用,即另一个名字 super——当前对象的直接父类对象的引用 null Human tom; //tom=new Human( ); tom=null; tom.eat(a); //会出现NullPointE
原创力文档

文档评论(0)