亚洲天堂一级片-亚洲天堂三区-亚洲天堂久久精品成人-亚洲天堂毛片-久久国产欧美日韩高清专区-久久国产欧美日韩精品免费

北大青鳥:Java和ruby的方法調用作用域差別

Java的方法調用作用域

private方法在Java當中的含義是只在當前類范圍之內可以調用,當前類的子類也無法訪問,但能被同一類別的其他對象實例調用,例如:

package com.robbinfan; public class C {     private String name;     private String getName() {         return name;     }     public C(String name) {         this.name = name;     }     public boolean compare(C c) {         return this.name == c.getName();     } }

protected方法在Java當中的含義是在當前類所在的整個package當中都可見,其他package類則無法訪問。

ruby的方法調用作用域

private在當前類以及子類都可以調用,其他類無法訪問,比Java寬松一些,但private方法只能被當前對象隱式調用(self.),不能被同一類別的其他對象實例調用,這又比Java嚴格;protected稍微寬松一些,可以被同一個類別的其他實例調用,例如:

class C   def initialize(name)     @name = name   end    def compare(c)     c.name == @name   end    protected   def name     @name   end end  class D < C end  d1 = D.new("fankai") d2 = D.new("hello")  puts d1.compare(d2)

在類別C當中使用c.name,如果name方法是private的話,只能使用self調用,即只能當前對象實例在當前類范圍內調用;如果name方法是protected的話,那么可以使用同一類的對象實例顯式調用,即可以引用其他對象實例的name方法。

因此privateprotected的在rubyJava的定義有很大的區別:

1、在不同對象實例當中的作用域不同

Java不管private還是protected的方法,都可以被同一個類別的其他對象實例調用;

Rubyprivate方法不能被同一個類別的其他對象實例調用;

2、在類繼承關系當中的作用域不同

ruby不管private還是protected方法,都可以被子類繼承;

Javaprivate方法不能被子類繼承;

這種方法調用的差異,也許來自于不同的面向對象理念:Java的面向對象來自C++,強調類繼承關系,所以方法調用限定類繼承的層次結構當中的作用域,卻不強調對象實例作用域;而ruby的面向對象來自smalltalk,即使是類別也是對象,因此方法調用作用域都是針對對象實例調用來設置的。

北大青鳥網上報名
北大青鳥招生簡章
主站蜘蛛池模板: 日韩亚洲欧美综合一区二区三区 | 国产精品久久久一区二区三区 | www.xxxx欧美| 免费一区二区三区四区五区 | 欧美在线亚洲 | 亚洲一区二区三区在线播放 | 99j久久精品久久久久久 | 亚洲网站在线播放 | 亚洲精品免费在线观看 | 日本道综合一本久久久88 | 久久在线观看免费视频 | 日韩毛片大全免费高清 | 波多野结衣在线不卡 | 国产香蕉成人综合精品视频 | 亚洲综合一区二区不卡 | 成人a毛片视频免费看 | 香蕉久久一区二区不卡无毒影院 | 国产一级特黄aa级特黄裸毛片 | 国产成人免费观看在线视频 | 成人亚洲在线观看 | 国产婷婷成人久久av免费高清 | 亚洲黄色在线播放 | 日本高清在线精品一区二区三区 | 操爽视频 | 亚洲情乱| 久久91| 123成人网| 日本手机在线视频 | 成人伊人 | 久久国产亚洲欧美日韩精品 | 欧美综合视频在线 | 天堂素人搭讪系列嫩模在线观看 | 日本高清无吗免费播放 | 亚洲欧美日韩在线一区 | a级毛片毛片免费很很综合 a级毛片免费 | 亚洲成a人片在线观看 欧美 | 国产在线手机视频 | 国产一级做a爰片在线 | 亚洲精品天堂一区在线观看 | 男女性男女刺激大片免费观看 | 91精品综合 |