第六章深入面向对象的程序设计 继承与重载 接口 三、包 四、方法 五、错误、异常及其处理
第六章 深入面向对象的程序设计 一、继承与重载 二、接口 三、包 四、方法 五、错误、异常及其处理
、继承与重载 的继承 在Java中,类是一个层次结构,其中有 个被称为0 bject的特殊超类,所有的类都 直接或间接地继承0 bject类 子类继承父类的属性和方法,同时也可以 修改父类的属性或重载父类的方法,以及在 父类的基础上添加新的属性和方法。因此, 父类和子类之间反映的是“一般与特殊”的 关系
一、继承与重载 1、类的继承 在 Java 中,类是一个层次结构,其中有 一个被称为Object的特殊超类,所有的类都 直接或间接地继承Object类 子类继承父类的属性和方法,同时也可以 修改父类的属性或重载父类的方法,以及在 父类的基础上添加新的属性和方法。因此, 父类和子类 之间反映的是“一般与特殊”的 关系
子类的定义格式 「修饰符1子类名 extends父类名 类体 《注意》 1、没有 extends,默认父类为 Object 2、只能有一个父类,即单继承 3、子类继承父类的全部成员 4、类继承具有传递性
子类的定义格式 [修饰符] 子类名 extends 父类名 { 类体; } 《注意》 1、没有extends,默认父类为Object 2、只能有一个父类,即单继承 3、子类继承父类的全部成员 4、类继承具有传递性
class B int b1 =1; blic int b2=2, protected int b3=3 private int b4=4; int getb4(return b4; 1 class a extends B int a 5 int Sum(i return b1+b2+ b3+ getb40)+a; I
class B { int b1 = 1; public int b2 = 2; protected int b3 = 3; private int b4 = 4; int getb4( ) { return b4; } } class A extends B { int a = 5; int Sum( ) { return b1 + b2 + b3 + getb4( ) + a ; } }
public class classlnheritance static public void main(String argI ]) B bb= new BO; System. out. printIn(B: +bb b1++bb b2+ +bb. b3++bb. getb4() a aa=new a(; System. out. printIn(A: +aa b1++aa b2+ ""+ab3+""+ aa. getb4()+ +aaa++ aaSum();
public class ClassInheritance { static public void main(String arg[ ]) { B bb = new B( ); System.out.println("B: "+bb.b1+" "+bb.b2+ " "+bb.b3+" "+bb.getb4( )); A aa = new A( ); System.out.println("A: "+aa.b1+" "+aa.b2+ " "+aa.b3+" "+aa.getb4( ) + " "+aa.a + " " + aa.Sum( ) ); } }
class b class C extends a int b1= 1; int c= 6 public int b2=2, void change(int increase) protected int b3=3; private int b4= 4; b1 + increase int getb4(lreturn b4; I b2 + increaser b3 + increase, void setb4(int i) b4=i;] setb4( getb4()+ increase a t= increaser class a extends B ct= increase int a=5:
class B { int b1 = 1; public int b2 = 2; protected int b3 = 3; private int b4 = 4; int getb4( ) { return b4; } void setb4( int i ) { b4 = i; } } class A extends B { int a = 5; } class C extends A { int c = 6; void change( int increase ) { b1 += increase; b2 += increase; b3 += increase; setb4 ( getb4( ) + increase ); a += increase; c += increase; } }
public class CPP static public void main(String argI D) C cc=new CO; System. out.println(C: +cc b1++ccb2++ cc. b3++cc.getb4(++cc.a++cc.c); ccchange( 15 ) System. out.println (C: +cc b1++ccb2++ cc. b3++cc. getb40)++cc. a++cc. c);
public class CPP { static public void main(String arg[ ]) { C cc = new C( ); System.out.println("C: "+cc.b1+" "+cc.b2+" "+ cc.b3+" "+cc.getb4( ) +" "+cc.a+" "+cc.c); cc.change( 15 ); System.out.println("C: "+cc.b1+" "+cc.b2+" "+ cc.b3+" "+cc.getb4( ) +" "+cc.a+" "+cc.c); } }
子类与父类的属性与方法 击类继承父类的所有内容,但父类中的 private部分不能直接访问 子类中新增加的属性和方法是对父类的扩 展 子类中定义的与父类同名的属性是对父类 属性的隐藏,同名的方法是对父类方法的重 载或覆盖
子类与父类的属性与方法 子类继承父类的所有内容,但父类中的 private部分不能直接访问 子类中新增加的属性和方法是对父类的扩 展 子类中定义的与父类同名的属性是对父类 属性的隐藏,同名的方法是对父类方法的重 载或覆盖
类的成员覆盖 类成员覆盖是指在子类中新增加的成员变 量或成员方法的名称与父类相同。 2、成员变量:在子类中,访问的是子类定义 的成员变量,若要使用父类的成员,需要使用 关键字 super作为前缀; 3、成员方法:若参数表完全一样,欲使用父 类中的成员函数,也需要使用 super作为前缀
类的成员覆盖 1、类成员覆盖是指在子类中新增加的成员变 量或成员方法的名称与父类相同。 2、成员变量:在子类中,访问的是子类定义 的成员变量,若要使用父类的成员,需要使用 关键字super 作为前缀; 3、成员方法:若参数表完全一样,欲使用父 类中的成员函数,也需要使用super 作为前缀
class a intx=1234; void show( I System. out.println(classA: ");1 class b extends a doublex=567.89 void showo super show(; System. out. println("class B: )
class A { int x = 1234; void show( ) { System.out.println("class A : "); } } class B extends A { double x = 567.89; void show( ) { super.show( ); System.out.println("class B : "); } }