php和java访问中的一些区别
<?php
class Demo{
const CON = "常量";
public $a = '成员变量';
public static $a_s = '静态成员变量';
public function __construct(){
echo '类已创建';
}
public function show_a(){
echo "在方法中访问常量".self::CON.'<br>';
echo "在方法中访问成员变量".$this->a.'<br>';
echo "在方法中访问成员静态变量".self::$a_s.'<br>';
self::show_a_s();
$this->show_a2();
}
public function show_a2(){
echo "这是第二个方法";
}
public function show_a_s2(){
echo "这是第二个静态方法";
}
public static function show_a_s(){
echo '调用了静态方法';
echo "在方法中访问成员静态变量".self::$a_s.'<br>';
}
}
$newDemo = new Demo();
// echo '常量:'.Demo::CON;
// echo '成员变量:'.$newDemo->a;
// echo '成员静态变量:'.Demo::$a_s;
// $newDemo->show_a();
$newDemo::show_a_s();
java
package phase1_2;
public class Test_Class {
public static void main(String[] args) {
Demo newDemo = new Demo();
// System.out.println("访问常量,第一种:"+newDemo.con);
// System.out.println("访问常量,第二种:"+new Demo().con);
// System.out.println("访问成员变量:"+newDemo.a);
// System.out.println("访问静态成员变量:"+newDemo.a_s);
// newDemo.show_a();
newDemo.show_a_s();
}
}
class Demo{
final String con= "这是常量";
public String a = "这是成员变量";
public static String a_s = "这是静态成员变量";
public Demo() {//构造函数
System.out.println("类已创建");
}
public void show_a() {
System.out.println("这是方法");
System.out.println("访问常量:"+this.con);
System.out.println("访问成员变量:"+this.a);
System.out.println("访问静态成员变量:"+ this.a_s);
this.show_a_s(); // 调用静态方法 php中 self::show_a_s();
this.show_a2(); // 调用方法 php中 $this->show_a2();
// 这里的this都可以省略,但在php中需要注意this,self的使用
}
public void show_a2() {
System.out.println("这是第二个方法");
}
public static void show_a_s2() {
System.out.println("这是第二个静态方法");
}
public static void show_a_s() {
// 1. 静态方法只能直接调用静态成员(包括变量和方法),而不能直接访问类中的非静态成员
// 2. 静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前不用创建任何实例对象,当静态方法调用时,this所使用的对象根本没有创建
// 3.静态方法中不可能再创建静态变量,不会导致方法里面的变量为静态变量 因为方法中的变量都是局部变量,不可能同时为局部变量又同时是静态变量
// 8.静态方法可以调用静态方法 可以调用非静态方法(通过类对象调用),静态方法可以调用静态成员变量,但是不能调用非静态成员变量(不能直接调用,但是可以通过类对象调用非静态成员变量)
System.out.println("这是静态方法");
System.out.println(a_s);
show_a_s2();
}
}