JAMADAM.COM

RSS Subscribe to my RSS feed

Stripe Calendar

Sep, 2010
Aug 1516171819202122232425262728293031 Sep 123456789

Entry: JavaとPerlの挙動の違いでハマった

JavaとPerlの挙動の違いでハマった

Initial post: 2009.09.04 | Last modified: 2009.09.04

javaでちょっとハマった。Perlでやってたときの感覚とちょっと違う。Javaむずい。

 

Perlの場合

package main;

    my $super = superClass->new();
    my $sub = subClass->new();

    print $super->who;   # superClass
    print $super->who2;  # superClass=HASH(0x817f9f0)
    print $sub->who;     # subClass
    print $sub->who2;    # subClass=HASH(0x8198210)

package superClass;

    sub new {
        bless {name => 'superClass'}, shift;
    }

    sub who {
        return shift->{name};
    }

    sub who2 {
        return shift;
    }

package subClass;

    use base qw(superClass);

    sub new {
        bless {name => 'subClass'}, shift;
    }

javaの場合

public class java_project {

    public static void main(String[] args) {

        superClass super_instance = new superClass();
        subClass sub_instance = new subClass();

        System.out.println(super_instance.who());  // superClass
        System.out.println(super_instance.who2()); // class superClass
        System.out.println(sub_instance.who());    // superClass
        System.out.println(sub_instance.who2());   // class subClass
    }
}

class superClass{

    private String name = "superClass";

    public String who() {
        return this.name;
    }

    public String who2() {
        return this.getClass().toString();
    }
}

class subClass extends superClass {

    private String name = "subClass";
}