2014-03-13 8 views
0

사각형 함수 영역이라고 불리는 다른 클래스의 함수를 cuboid 클래스로 호출하려고합니다.다른 클래스의 함수 호출

abstract class Shapes 
{ 
protected $name; 
protected $colour; 

function __construct($n, $c) 
{ 
    $this->name = $n; 
    $this->colour = $c; 
} 

thankyou! 적어도이 방법을 수정해야합니다 :

+0

귀하의 printShape 방법은 어디에 있습니까? –

+1

Square 클래스에서 "Square"를, Cuboid 클래스에서 "Cuboid"를 전달하는 목적은 무엇입니까? –

+0

답장을 보내 주셔서 감사합니다. ive 님이 내 메인 포스트를 업데이트했습니다. 필자는 코드를 맨 위에 추가했습니다. print 함수가 추상 클래스 인 경우 – user3320800

답변

0

먼저이 전체가 작동 의미하지 않는다

function callclassA()  { 
    $area1=0; 
    $classA = new Square(); 
    $area1 = $area1 + $classA->area(); 
} 

을하지만, 적어도 당신이 아닌 객체의 메소드를 호출하려고하지 것이다 . 둘째

상기 callclassA() 메소드는 생성 및 변수를 작성하지만, 아무것도 반환하지, 그리고 이것은 클래스 변수의 결과를 지속하지있어된다. 같은 것을 시도하는 더 나은 것

class Cuboid extends Shapes 
{ 
private $square=null; 
private $area=null; 
function __construct($n, $c, $s, $ns) 
    { 
    parent::__construct($n, $c); 
    $this->square=new Square("Square", $c, $s, $ns); 
    $this->area = $this->square->area(); 
    } 

    public function area() 
    { 
     return (6* $this->area); 
    } 
    public function perimeter() 
    { 
     return (9* $this->area); 
    } 
} 

셋째 : 당신은 입방 형의 둘레가 9 번 사각형 영역입니다 확신? 사각 경계선의 무언가 일 것이 아닌가?

+0

이 오류가 발생하는 것 같습니다 구문 오류 : 예상치 못한 '$ square'(T_VARIABLE), 예상 함수 (T_FUNCTION). 그래서 그것은 Cuboid extends Shapes 클래스 밑의 라인입니다. 덕분에 편집 : 당신은 주변에 관한 권리 ... 나는 지금 막 무작위 값을 추가했기 때문에 couldnt 지역 일하는 얻는다. 그래서 나는 먼저 일하는 지역을 얻는 것을 목표로해야한다. – user3320800

+0

나의 나쁜. 클래스 바스는 시야가 부족한 곳입니다. 지금 내가 "개인"이라고 덧붙여 보았습니다. – amenadiel

+0

점점 .. 오류가 발생했습니다 Square :: __ construct()에 대한 인수 1이 누락되었습니다. square 클래스 함수 구조 및 cuboid 클래스의 부모 생성 ..thanks – user3320800

0

독립적 인 클래스는 데이터를 공유하면 안되며 정상적인 방법으로는 불가능합니다.

class Square { 

    protected $s; 

    ... 

    public function getSideLength() { 
     return $this->s; 
    } 

} 

class Cuboid { 

    ... 

    public static function fromSquare(Square $square) { 
     return new static($square->getSideLength()); 
    } 

} 

$square = new Square(...); 
$cube = Cuboid::fromSquare($square); 

귀하의 코드가 상세하게 적응하기에 너무 복잡하지만,이 희망을 통해 아이디어를 얻는 대신, 입방에 광장에서 변환 어댑터 방법을 제공한다.

+0

안녕, ive 수정 3 내 메인 게시물을 업데이 트되었습니다. 그게 어떻게 생겼는지입니다. 내가 그것을 올바르게 했어. – user3320800

관련 문제