php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.04.2008, 12:08  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

ich btrauche ein beweis, dass es in Java anderes funktionieren wird.

in java
Code:
abstract class Papa {
  public static void   SayHello()
  {
	  DoItMyWay(); 
  }
  
  public static void DoItMyWay() { 
      System.out.println("Guten Tag!"); //
  } 

}

 abstract class Kind extends Papa{
	public static void DoItMyWay() { 
       System.out.println("boo boo waa waa"); 
    } 

}

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Kind.SayHello();// Guten Tag! 

	}

}
Ich finde verhalten von classe absolut korrekt.
__________________
Slava
http://bituniverse.com
Slava ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.04.2008, 20:32  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Was ist daran logisch? Vererbung im abstrakten Kontext ist dann total fuer die Tonne ..
Zergling-new ist offline   Mit Zitat antworten
Alt 07.04.2008, 19:46  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Zergling
Was ist daran logisch? Vererbung im abstrakten Kontext ist dann total fuer die Tonne ..
FRED, FRED, FREEEEEEEEED?
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 08.04.2008, 05:32  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich kapier ehrlich gesagt nicht was du willst.
Zergling-new ist offline   Mit Zitat antworten
Alt 08.04.2008, 18:02  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

Zitat:
Zitat von Zergling
Was ist daran logisch? Vererbung im abstrakten Kontext ist dann total fuer die Tonne ..
eine Statische Mehtode gehört nicht zu einem Objekt sondern zu einer Klasse.
Woher soll 'Papa' es wissen, welche Statische Methode du haben willst?
ausserdem steht da doch geschrieben 'self' was eigentlich für sich spricht.
self:oItMyWay();
Was dasselbe wie Papa:oItMyWay() bedeutet.

Zitat:
[ot]
was ist mit dem 'FRED' gemeint?
kann ich leider nicht nachvollziehen
[/ot]
__________________
Slava
http://bituniverse.com
Slava ist offline   Mit Zitat antworten
Alt 08.04.2008, 19:38  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Was spricht denn gegen Vererbung statischer Methoden? Ist nicht weniger logisch.
Zudem ist die Aussage
Zitat:
eine Statische Mehtode gehört nicht zu einem Objekt sondern zu einer Klasse.
ja auch nur bedingt anwendbar. Denn die Methode wird ja vererbt, nur der Kontext nicht.

Denn siehe (B::outA (); liefert nicht etwa einen Fehler):

PHP-Code:
<pre><?

class A
  
{
  static 
$value __CLASS__;

  function 
outA ()
    {
    echo 
self::$value "\n";
    }
  }

class 
extends A
  
{
  static 
$value __CLASS__;
  }


A::outA (); // A
B::outA (); // A
Die Methode wird vererbt, aber der Context nicht. Blöde Idee weil faktisch kaum nutzbar. In die Falle bin ich schon öfter getappt.
Stimmt schon, der Bezeichner self impliziert dieses Verhalten, aber eine Auflösung zur Laufzeit, meinetwegen auch mit static als Schlüsselwort, ist wirklich wünschenswert.
.

Geändert von nikosch (05.01.2009 um 21:28 Uhr).
nikosch ist offline   Mit Zitat antworten
Alt 08.04.2008, 21:20  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

sorry, aber ich kann mich nur wiederholen.
Ausserdem hast du bei PHP ein Ausnahmefall getroffen, in dem man eine einfache Methode als static aufgerufen ist und dabei nicht meckert.
(weil du eben keine this innerhalb von methode benutzt hast.
In Java oder C# kannst du eine Statische Methode nur mit Classnamen benutzen und sogar self ist nicht mehr erlaubt.
Also würdest Du schon von Anfang an statt self.variablename Papa.variable schreiben müssen
Code:
C#
/*
 * Erstellt mit SharpDevelop.
 * Benutzer: slavik
 * Datum: 08.04.2008
 * Zeit: 20:45
 * 
 * Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
 */
using System;

namespace statics
{

	class A
  	{ 
 		public static  char value = 'A'; 

  		public void outA () 
    	{ 
  			Console.WriteLine(value);
    	} 
  	} 

	class B : A
  	{ 
   		new public static  char value = 'B'; 
  	} 
	
	
	class Program
	{
		public static void Main(string[] args)
		{
			
			
			// TODO: Implement Functionality Here
			A a=new A();
			a.outA();
			B b=new B();
			b.outA();
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}
bekommst du auch 2 mal 'A'

Wenn das nicht bei Java oder C# nicht functioniert, warum muss PHP das können?

Edit:
Zum Schluss
der gleiche in C# von deinem erstem Beispiel, dass Auch 2 mal 'A' liefert
Code:
namespace statics
{

	class A
  	{ 
 		public static  char value = 'A'; 

  		public static void outA () 
    	{ 
  			Console.WriteLine(value);
    	} 
  	} 

	class B : A
  	{ 
   		 public static new  char value = 'B'; 
  	} 
	
	
	class Program
	{
		public static void Main(string[] args)
		{
			
			
			
			A.outA();
			
			B.outA();
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}
Also es hat in Moment kein Sinn auf ASP.NET umzusteigen
__________________
Slava
http://bituniverse.com
Slava ist offline   Mit Zitat antworten
Alt 09.04.2008, 05:48  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Deine Argumente besagen lediglich, dass hier eine konsequente Linie verfolgt wurde, aber nicht, dass das ganze logisch ist.
Wenn ich meinen statischen Aufruf in Klasse Kind starte, erwarte ich auch, dass dieses in diesem Kontext ausgefuehrt wird. Hier wird aber der Kontext (Aufruf aus Klasse Kind) einfach verworfen und in Klasse Papa rumgestreunert. Mag sein dass dies das Konzept abstrakter Klassen ist und man dann besser auf Singletons setzen sollte, aber logisch ist das fuer mich trotzdem nicht Slava
Zergling-new ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
statische Eigenschaft einer unbekannten Klasse aufrufen Zergling-new PHP-Fortgeschrittene 30 05.01.2010 20:04
statische Variable in Methode tinchen PHP Tipps 2008 5 21.12.2007 20:54
statische Aufrufe, Ableitungen Zergling-new PHP-Fortgeschrittene 10 01.12.2007 20:07
Suche Befehl: MySQL Output in statische Seite schmeissen tekknotrip PHP Tipps 2006 3 14.09.2006 11:49
Singleton besser als komplett statische Klasse ? Cmon PHP-Fortgeschrittene 4 13.06.2006 00:34
eine PHP Seite als statische Seite auf dem Server legen seven-12 PHP Tipps 2006 16 17.05.2006 15:18
include nachträglich in statische Seite einfügen PHP Tipps 2007 6 17.11.2005 20:03
Zugriff auf statische methoden oder konstanten nightfreak PHP-Fortgeschrittene 6 14.11.2005 16:56
[Erledigt] statische Variablen =&gt; References PHP-Fortgeschrittene 5 27.09.2005 01:37
Statische Kopie von dyn. Seite ? PHP Tipps 2005-2 1 23.07.2005 18:39
PHP5: Klassenattribut für statische Methode, mit Vererbung PHP-Fortgeschrittene 9 24.05.2005 09:35
[Suche] Coder für einfache (statische) Seite Beitragsarchiv 8 10.02.2005 16:32
PHP-Script in statische php-Seite einbinden PHP Tipps 2004 2 13.10.2004 15:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
oop void, php oop void, java vererbung statischer methoden

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:29 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.