zoukankan      html  css  js  c++  java
  • 继承和接口

    动手动脑【继承条件下的构造方法使用】

    源程序代码:package com;

    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 KaoShi{

    public static void main(String args[]) {

            Child c = new Child();

    此代码的运行结果为:GrandParent Created.

    Parent Created

    Child Created

    若将public parent类中的代码改为:public Parent() {

            super("Hello.Grandparent.");

            System.out.println("Parent Created");

        则运行的结果如下:GrandParent Created.String:Hello.Grandparent.

    Parent Created

    Child Created

    若将public parent类中的代码改为:public Parent() {

           System.out.println("Parent Created");

           super("Hello.Grandparent.");

    程序将会报错:说明通过super调用基类构造方法,必须是子类构造方法中的第一个语句。

    动手动脑【finally 类是不可以被继承的,其中的属性也不能被修改】

    程序代码: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();

          }

     

      public static void main(String args[])

      {

            Address ad=new Address("abc","efg");

            String a=new String();

           System.out.println( ad.getDetail());

            System.out.println(ad.getPostCode());

    }

      }

    动手动脑【探索jdk的奥秘】

    源程序代码:package com;

    public  class KaoShi {

    public static void main(String[] args) {

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

    }   

    }

    class A{}

    运行结果为:com.A@2a139a55

    动手动脑【神奇的+号】

    程序代码:

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

        }

    }

    运行结果:f=Fruit toString.

    结果分析:在+运算中,当任何一个对象与String对象连接时,会隐式地调用其toString()方法,默认情况下,次方法返回“类名@+hashCode。为了返回有意义的信息可以进行重写。

  • 相关阅读:
    BZOJ1070[SCOI2007]修车
    BZOJ1061[Noi2008] 志愿者招募
    BZOJ 3511 土地划分
    BZOJ3130 [Sdoi2013]费用流
    POJ1797 Heavy Transportation
    P2866 糟糕的一天
    P1155 双栈排序
    P1027 car的旅行路线
    POJ3037 Skiing
    POJ1125 Stockbroker Grapevine
  • 原文地址:https://www.cnblogs.com/19950216z/p/4946928.html
Copyright © 2011-2022 走看看