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();
 		
	}
}

 
posted @ 2022-04-02 09:47  coderwcb  阅读(25)  评论(0编辑  收藏  举报