【发布时间】:2023-03-14 11:57:01
【问题描述】:
static 是什么意思?
我知道public表示可以从类外访问,而private只能从类内访问……
【问题讨论】:
-
公共方法和属性只有在类实例化后才能访问,并通过“->”号调用。公共静态方法和属性无需实例化类即可访问,可通过“::”调用。
-
好问题..
-
伙计,我在 2011 年真是太笨了:x
static 是什么意思?
我知道public表示可以从类外访问,而private只能从类内访问……
【问题讨论】:
例子:
public class Methods_Test1
{
public static void Display(String Name)
{
System.out.println("Hello There " + Name);
System.out.println("I am from Display method");
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter name");
String name = sc.next();
Obj.Display(name);
}
public static void Display(String name) 方法可在其自己的类中作为静态方法访问,无需创建类的对象即可访问,而对于可以通过创建对象访问的外部类,相同的方法表现为 public .
【讨论】:
Obj.Display(name);
一个例子:当使用static关键字时,我们不能使用$this
class Foo {
private $foo='private';
private function priv_func() {
echo 'priv_method';
}
public static function get() {
echo $this->foo;
$this->priv_func();
}
}
$obj = new Foo();
$obj->get();
致命错误:在 (...) 中不在对象上下文中时使用 $this
【讨论】:
self 访问同一类中的静态方法和静态变量。 self::priv_func();
来自http://php.net/manual/en/language.oop5.static.php
声明类属性或方法 因为静态使它们可以访问 无需实例化 班上。声明为的属性 静态不能访问 实例化的类对象(虽然 静态方法可以)。
【讨论】:
public:公开声明的项目可以在任何地方访问。
受保护:受保护限制对继承和父母的访问 类(以及定义项目的类)。
private:Private 将可见性仅限于定义的类 项目。
static:静态变量只存在于局部函数范围内, 但是当程序执行离开这个范围时它不会失去它的价值。
final:final 关键字防止子类覆盖 方法通过在定义前加上final。如果类本身是 被定义为 final 则不能扩展。
PHP 之外:
瞬态:瞬态变量是一个可能不会 被序列化。
volatile:一个可能被多个人同时修改的变量 线程应该被声明为 volatile。声明为 volatile 的变量 不会被编译器优化,因为它们的值可以在 随时。
【讨论】:
静态意味着它可以在不实例化类的情况下访问。这对常量有好处。
静态方法不需要对对象的状态产生影响。除了参数之外,它们还可以有局部变量。
【讨论】: