动手动脑

Posted pslqyz

tags:

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

 

构造函数即为在对象创建的时候使用为对象分配空间,创建子类对象时,即会创立父类对应值的空间,所以需要调用父类的构造函数。

课后验证

1.

public final class Address

{

private final String detail;

private final String postCode;

 

//在构造方法里初始化两个实例属性

public Address()

{

this.detail = "";

this.postCode = "";

 

}

public Address(String detail , String postCode)

{

this.detail = detail;

this.postCode = postCode;

}

//仅为两个实例属性提供getter方法

public String getDetail()

{

 return this.detail;

}

 

public String getPostCode()

{

 return this.postCode;

}

//重写equals方法,判断两个对象是否相等。

public boolean equals(Object obj)

{

if (obj instanceof Address)

{

Address ad = (Address)obj;

if (this.getDetail().equals(ad.getDetail()) && this.getPostCode().equals(ad.getPostCode()))

{

return true;

}

}

return false;

}

public int hashCode()

{

return detail.hashCode() + postCode.hashCode();

}

}

 

2.

public class ExplorationJDKSource {

 

/**

 * @param args

 */

public static void main(String[] args) {

System.out.println(new A());

}

 

}

 

class A{}

 技术图片

 

 

 

3.

public class Fruit

{

 

public String toString()

{

return "Fruit toString.";

}

 

public static void main(String args[])

{

Fruit f=new Fruit();

System.out.println("f="+f);

// System.out.println("f="+f.toString());

}

}

 技术图片

 

 

 

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

}

}

 技术图片

 

 

 

5

class Mammal{}

class Dog extends Mammal {}

class Cat extends Mammal{}

 

public class TestCast

{

public static void main(String args[])

{

Mammal m;

Dog d=new Dog();

Cat c=new Cat();

m=d;

//d=m;

d=(Dog)m;

//d=c;

//c=(Cat)m;

 

}

}

 技术图片

 

 

6.

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

 

  }

 

}

 技术图片

 

 

7.

public class TestInstanceof

{

public static void main(String[] args)

{

//声明hello时使用Object类,则hello的编译类型是ObjectObject是所有类的父类

//hello变量的实际类型是String

Object hello = "Hello";

//StringObject类的子类,所以返回true

System.out.println("字符串是否是Object类的实例:" + (hello instanceof Object));

//返回true

System.out.println("字符串是否是String类的实例:" + (hello instanceof String));

//返回false

System.out.println("字符串是否是Math类的实例:" + (hello instanceof Math));

//String实现了Comparable接口,所以返回true

System.out.println("字符串是否是Comparable接口的实例:" + (hello instanceof Comparable));

String a = "Hello";

//String类既不是Math类,也不是Math类的父类,所以下面代码编译无法通过

//System.out.println("字符串是否是Math类的实例:" + (a instanceof Math));

}

}

 技术图片

 

 

8

class Parent

        

{

 

public int value=100;

 

public void Introduce()

{

 

         System.out.println("I‘m father");

 

     }

 

 

}

 

class Son extends Parent

{

 

public int value=101;

 

      public void Introduce()

{

 

         System.out.println("I‘m son");

 

}

 

}

 

 

class Daughter extends Parent

{

 

public int value=102;

public void Introduce()

{

 

         System.out.println("I‘m daughter");

 

}

 

}

 

public class TestPolymorphism

{

 

 

    public static void main(String args[])

    {

 

        Parent p=new Parent();

 

        p.Introduce();

 

        System.out.println(p.value);

 

        p=new Son();

 

        p.Introduce();

 

        System.out.println(p.value);

 

        p=new Daughter();

 

        p.Introduce();

 

        System.out.println(p.value);

 

 

    }

 

 

}

 技术图片

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

动手动脑-4

动手动脑,无法自拔

方法的动手动脑

第三次实验及动手动脑

第八周动手动脑

动手动脑,第六次Tutorial——数组