クラスの継承

Contents

出力結果

My name is FirstName LastName
My sex is male
My specialty is cardiology


説明

About Base class (Human class), please refer to Create class and object.


プログラム例


Java

/*
Human.class must be compiled earlier and must be put in the path of environmental value CLASSPATH=... or in same directory
*/
import java.util.*;
class Doctor extends Human{
    private String specialty;

    public Doctor(Map<String, String> opt){
        super(opt);
        this.specialty = opt.get("specialty");
    }

    public void saySpecialty() {
        System.out.println("My specialty is " + this.specialty);
    }

    public static void main(String args[]) {
        Map<String, String> opt = new HashMap<String, String>();
        opt.put("name", "FirstName LastName");
        opt.put("sex", "male");
        opt.put("specialty", "cardiology");
        Doctor doctor1 = new Doctor(opt);
        doctor1.sayName();
        doctor1.saySex();
        doctor1.saySpecialty();
    }
}

JavaScript

const Human = require('../human_class/Human.js');
class Doctor extends Human {
	constructor(opt) {
		super(opt);
        this.specialty = opt["specialty"];
    }

	saySpecialty() {
        console.log("My specialty is " + this.specialty);
    }
}
module.exports = Doctor;

if(!module.parent) {
    let doctor1 = new Doctor({"name":"FirstName LastName", "sex":"male", "specialty":"cardiology"});
    doctor1.sayName();
    doctor1.saySex();
    doctor1.saySpecialty();
}

Perl

package Doctor;
use strict;
use Data::Dumper;
use warnings;
use File::Basename;
use lib dirname(__FILE__).'/../human_class';
use base qw(Human);

sub new(){
  my $class = shift;
  my $op = shift;
  my $self = Human->new( $op );
  $self = bless $self, $class;
  $self->{'specialty'} = $op->{'specialty'};
  return $self;
}

sub saySpecialty(){
  my $self = shift;
  if($self->{'specialty'}){
    print "My specialty is ".$self->{'specialty'}."\n";
  }
}

if ($0 eq __FILE__) {
  my $doctor1 = new Doctor({'name' => "FirstName LastName", "sex" => "male", "specialty" => "cardiology"});
  $doctor1->sayName();
  $doctor1->saySex();
  $doctor1->saySpecialty();
}
else{
  1;
}

PHP

<?php
namespace FirstClass\Example2;
require __DIR__. '/../human_class/Human.php';
use FirstClass\Example1\Human;

class Doctor extends Human{
  private $specialty;

  public function __construct($opt){
    parent::__construct($opt);
    $this->specialty = $opt["specialty"];
  }

  public function saySpecialty(){
    print "My specialty is ".$this->specialty."\n";
  }
}

if (!isset(debug_backtrace()[0])) {
  $doctor1 = new Doctor(["name"=>"FirstName LastName", "sex"=>"male", "specialty"=>"cardiology"]);
  $doctor1->sayName();
  $doctor1->saySex();
  $doctor1->saySpecialty();
}


Python

import sys
sys.path.append('../human_class')
from Human import Human

class Doctor(Human):
	def __init__(self, opt):
		super().__init__(opt)
		self.specialty = opt["specialty"]

	def saySpecialty(self):
		print("My specialty is " + self.specialty)

if __name__ == "__main__":
	doctor1 = Doctor({"name":"FirstName LastName", "sex":"male", "specialty":"cardiology"})
	doctor1.sayName()
	doctor1.saySex()
	doctor1.saySpecialty()

Ruby

require_relative "../human_class/Human.rb"

class Doctor < Human
    def initialize(opt)
        super
        @specialty = opt["specialty"]
    end

    def saySpecialty
        puts "My specialty is " + @specialty.to_s
    end
end

if $0 == __FILE__
    doctor1 = Doctor.new({"name" => "FirstName LastName", "sex" => "male", "specialty" => "cardiology"})
    doctor1.sayName
    doctor1.saySex
    doctor1.saySpecialty
end