继承与多态

1.

代码:

class Grandparent 
{
    public Grandparent()
     {
            System.out.println("GrandParent Created.");    
}
    public Grandparent(String string) 
    {
            System.out.println("GrandParent Created.String:" + string);    
 }
}
class Parent extends Grandparent
{
    public Parent()
     {
            super("Hello.Grandparent.");
            System.out.println("Parent Created");
       // super("Hello.Grandparent.");
      }
}
class Child extends Parent 
{
    public Child()
     {    
        System.out.println("Child Created");
      }
}
public class TestInherits 
{
    public static void main(String args[])
     {
            Child c = new Child();
  }
}

修改之前的运行结果

修改之后

在Java语言中,调用子类的构造方法之前,会先行调用父类的无参构造函数,而子类的构造方法会通过super()方法语句调用父类当中的特别的构造函数,而且必须写在第一行,否则会报错

思索:

在Java中子类是通过父类继承,所以子类有父类的所有非私有的属性和方法,如果不调用父类的构造方法,那么不能初始化父类中定义的属性,就给父类的属性分配内存空间 ,如果父类的属性没有分配内存空间,那么子类访问父类的属性,就会报错。

2.

代码如下:

public class Fugai 
{
    public static void main(String[] args)
    {
        Son x=new Son();
        x.add();
    }
}
class Father//父类
{
    public void add()
    {
        System.out.println("父亲");
    }
}
class Son extends Father//子类继承与父类
{
    public void add()
    {
        super.add();
        System.out.println("儿子");
    }
}

结果截图

在Java中,子类如果想要调用父类之中的函数可以引用super()

下面总结覆盖方法的四点性质

(1)覆盖方法所抛出的异常不能比原方法更多。(2)覆盖方法的访问范围不能超出元方法的范围(3)声明为final方法不允许覆盖。例如,Object的getClass()方法不能覆盖。(4)不能覆盖静态方法。

3有关于类型转化的问答

 m=d;正确,子类的对象可与i直接赋值给基类变量

d=m; 错误,基类对象要赋给子类对象变量,必须执行类型转换,引用语句的格式为(子类对象变量=(子类名)基类对象名;)

d=(Dog)m;正确,进行了类型转化

 d=c; 错误,不同子类之间不能进行赋值操作

c=(Cat)m 错误,m已经转化成dog类型,不能再进行赋值给cat的操作

4.

程序运行之后的结果

Parent.printValue(),myValue=100//父类打印数字
Child.printValue(),myValue=200//子类打印数字
Child.printValue(),myValue=200//父类对象访问子类成员,调用相同的函数名的函数属于子类的;父类的变量进行相关的原算,但是,如果这时父类变量指向子类对象,继续调用得方法和变量仍然是子类覆盖后的新的变量和方法的
Child.printValue(),myValue=200//任然调用的被覆盖后的子类数字
Child.printValue(),myValue=201//将父类强制转化为子类进行输出,调用的是子类的成员函数以及方法

将代码修改之后,会出现不同的结果

黑色进行标注的地方时进行修改之后的代码,在进行输出之后程序结果不同

 

posted @ 2017-11-10 08:33  tomhaha  阅读(133)  评论(0编辑  收藏  举报