Java学习之三

第十章:接口、继承与多态

(一)类的继承
继承思想:
类的继承是基于父类的扩展,指定出一个新的子类,子类可以继承父类原有的属性和方法,也可以增加的原来父类所不具备的属性和方法,或者直接重写父类中的某些放法
例子:
Java学习之三
分析:
1)在子类中可以连同初始化父类构造方法来完成子类初始化操作,既可以在子类的构造方法中使用super()语句调用父类的构造方法,也可以在子类中使用super关键字调用父类的成员方法等。
2)子类没有权限调用父类中被修饰为private的方法,只可以调用父类中修饰为public或protected的成员方法。
3)继承还可以重写父类的成员方法,就是在子类中将父类的成员方法的名称保留,重写成员方法的实现内容,更改成员方法的储存权限,或是修改成员方法的返回值类型。
注意: 当重写父类方法时,修改方法的修饰权限只能从小的范围到大的范围改变

在实例化子类对象时,Java编译器会在子类的构造方法中自动调用父类的无参构造方法,例如:
Java学习之三
运行结果:
Java学习之三
说明:在实例化子类对象时,父类无参构造方法将被自动调用,但有参构造方法并不能被自动调用,只能依赖于super关键字显式地调用父类的构造方法

(二)Object类

public class ObjectInstance{
         public String toString(){        //重写toString()方法
              return "在"+getClass().getName()+"类中重写toString()方法";
          }
         public static void main(String[] args){
              System.out.println(new ObjectInstance());      //打印本类对象
         }
    }

运算结果:
在ObjectInstance类中重写toString()方法

(三)对象类型的转换
1.向上转型:把子类对象赋值给父类类型的变量
Java学习之三
运算结果:
Java学习之三
分析:如果在四边形类的draw()方法中根据不同的图形对象设置不同的处理,就可以做到在父类中定义一个方法完成各个子类的功能

2.向下转型:将父类对象赋予子类对象,并强制转换为子类型

class Quadrangle{
     public static void draw( Quadrangle q){
          //SomeSentence
      }
  }
public class Parallelogram extends  Quadrangle{
           public static void main(String[] args){
                draw(new  Parallelogram());
                Quadrangle q=new Parallelogram();   //向上转型
                Parallelogram p=(Parallelogram) q;    //向下转型 
        }
   } 

(四)使用instanceof操作符判断对象类型