Java、PHP、AS中set/get方法的异同
分类:个人日志
来源:原创
时间:2011-05-14 22:29:11
在面向对象编程中,为了更好地实现封装,必须设置类中变量、函数的相关属性。大多数面向对象语言都可以设置四种属性:public、缺省、protected、private。除了private范围的变量、函数不能直接被外部文件访问外其他三种都是可以的,但有时候外部文件必须访问某个文件的private属性时,我们就不得不通过相应的函数提供访问接口,最常用的就是set/get了。本文通过举例说明对Java、PHP、AS中的set/get方法进行分析,以对它们之间的异同进行比较。
代码一(Java):
public class A {
private String name;
public int age;
public A() {
name = "";
age = 0;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class B {
public static void main(string[] args) {
A a = new A();
//private属性不能直接访问
a.setName("张三");
//public属性可以直接访问
a.age = 20;
System.out.println("姓名:" + a.getName());
System.out.println("年龄:" + a.age);
}
}
显示结果:
姓名:张三
年龄:20
代码二(PHP):
方法一(类似Java)
<?php
class A {
private $name;
public $age;
function A() {
$name = "";
$age = 0;
}
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $name;
}
}
?>
<?php
class B {
function B() {
$a = new A();
//private属性不能直接访问
$a->setName("张三");
//public属性可以直接访问
$a->age = 20;
echo "姓名:" + $a->getName();
echo "
";
echo "年龄:" + $a->age;
}
}
?>
<?php
$b = new B();
?>
显示结果:
姓名:张三
年龄:20
方法二(推荐):
<?php
class A {
private $name;
public $age;
__construct() {
$name = "";
$age = 0;
}
public function __SET($name,$n) {
$this->name = $n;
}
public function __GET($name) {
return $this->name;
}
}
?>
<?php
class B {
function B() {
$a = new A();
//private属性不能直接访问,有了name的__SET()方法后,可以通过访问属性的方式访问name,下同
$a->name = "张三";
//public属性可以直接访问
$a->age = 20;
echo "姓名:" + $a->name;
echo "
";
echo "年龄:" + $a->age;
}
}
?>
<?php
$b = new B();
?>
显示结果:
姓名:张三
年龄:20
代码三(AS):
方法一(类似Java)
public class A {
private name:String ;
public age:unint ;
public function A() {
name = "";
age = 0;
}
public function setName(name:String):void {
this.name = name;
}
public function getName():String {
return name;
}
}
public class B {
public function B() {
a:A = new A();
//private属性不能直接访问
a.setName("张三");
//public属性可以直接访问
a.age = 20;
trace("姓名:" + a.getName());
trace("
");
trace("年龄:" + a.age);
}
}
b:B = new B();
显示结果:
姓名:张三
年龄:20
方法二(推荐,类似PHP中“方法二”):
public class A {
private name:String ;
public age:unint ;
public function A() {
name = "";
age = 0;
}
public function set n(name:String):void {
this.name = name;
}
public function get n():String {
return name;
}
}
public class B {
public function B() {
a:A = new A();
//private属性不能直接访问
A.n = "张三";
//public属性可以直接访问
a.age = 20;
trace("姓名:" + a.n);
trace("
");
trace("年龄:" + a.age);
}
}
b:B = new B();
显示结果:
姓名:张三
年龄:20
- 默认分类(20)
- J2EE(25)
- Java(56)
- PHP(55)
- SEO(10)
- 网页设计(20)
- 网站建设(37)
- 数据库(7)
- JavaScript(17)
- JQuery(6)
- MySQL(20)
- SQL Server(6)
- Access(1)
- Oracle(6)
- office(6)
- Dreamweaver(4)
- Photoshop(12)
- Flash(9)
- Fireworks(13)
- CSS(14)
- HTML(4)
- .NET(7)
- ASP(2)
- DB2(1)
- Ajax(2)
- Linux(12)
- Struts(7)
- Hibernate(8)
- Spring(2)
- Jsp(22)
- Asp(8)
- C#(3)
- C++(1)
- 网络安全(5)
- 软件工程(7)
- XML(1)
- English(2)
- 计算机等级考试(2)
- 计算机病毒(4)
- 个人日志(76)
- 互联网(15)
- ActionScript(10)
- Android(3)
- 数据结构与算法(1)
- 游戏策略(3)
- 美文翻译(2)
- 编程开发(19)
- 计算机应用(4)
- 计算机(10)
- Unity3d(6)
- 其他(1)
- egret(1)