动手动脑4

Posted birdmmxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动手动脑4相关的知识,希望对你有一定的参考价值。

1.

class Grandparent 
{



   public Grandparent(String string) 
    {

            System.out.println("GrandParent Created.String:" + string);
    
 }

    public Grandparent()
     {

            System.out.println("GrandParent Created.");
    
}


}



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();
    
  }

}

运行结果:

GrandParent Created.
Parent Created
Child Created

 

总结:通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句。

不可以反过来,因为子类实例化默认先调用父类的构造。若子类定义了自己的构造方法,它先执行继承自父类的无参数构造方法,再执行自己的构造方法。子类构造方法没有显式调用父类构造方法,而父类又没有无参构造方法时,则编译出错。

 2.

public class ExplorationJDKSource {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(new A());
    }

}

class A{}

显示结果:

总结:不是很确定。。。

最后调用的是A()的默认构造函数,在A()类中计算机生成了一个默认构造函数。

3.

public class ShowArea {

    public void shouArea() {
    }
    
    public static void main(String [] args)
    {
        @SuppressWarnings("unused")
        Rectangle s1=new Rectangle();
        s1.showArea();
        @SuppressWarnings("unused")
        Square    s2=new Square();
        s2.showArea();
        @SuppressWarnings("unused")
        Circle    s3=new Circle();
        s3.showArea();
    }
    
}


abstract class Shape{
    abstract double showArea();
}


class Rectangle extends Shape{
    double a=2,b=3;
    @Override
    double showArea() {
        double s=a*b;
        System.out.println("矩形的面积:"+s);
        return s;
    }
}

class Square extends Shape{
    double a=2;
    double showArea() {
        double s=a*a;
        System.out.println("正方形的:"+s);
        return s;
    }
}

class Circle extends Shape{
    double raduis=2;
    double showArea() {
        @SuppressWarnings("unused")
        double s=3.14*raduis*raduis;
        System.out.println("圆的面积:"+s);
        return 0;
    }
}

运行结果:

矩形的面积:6.0
正方形的:4.0
圆的面积:12.56

总结:用方法重载实现覆盖父类。

4.

public class ParentChildTest {
    public static void main(String[] args) {
        Parent parent=new Parent();
        parent.printValue();
        Child child=new Child();
        child.printValue();
        
        parent=child;
        parent.printValue();
        
        parent.myValue++;
        parent.printValue();
        
        ((Child)parent).myValue++;
        parent.printValue();
        
    }
}

class Parent{
    public int myValue=100;
    public void printValue() {
        System.out.println("Parent.printValue(),myValue="+myValue);
    }
}
class Child extends Parent{
    public int myValue=200;
    public void printValue() {
        System.out.println("Child.printValue(),myValue="+myValue);
    }
}

运行结果:

Parent.printValue(),myValue=100
Child.printValue(),myValue=200
Child.printValue(),myValue=200
Child.printValue(),myValue=200
Child.printValue(),myValue=201

总结:当父类和子类有同样的方法时,对象是谁的,就调用谁的方法。

 

以上是关于动手动脑4的主要内容,如果未能解决你的问题,请参考以下文章

动手动脑4

动手动脑4

动手动脑4

课件中动手动脑4

动手动脑-4

java课堂_动手动脑4