久久久久女教师免费一区-亚洲精品久久-www.com国产-欧美亚洲日本-99热在线免费观看-欧美久久久

北大青鳥:Java和ruby的方法調(diào)用作用域差別

Java的方法調(diào)用作用域

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

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的方法調(diào)用作用域

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

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調(diào)用,即只能當前對象實例在當前類范圍內(nèi)調(diào)用;如果name方法是protected的話,那么可以使用同一類的對象實例顯式調(diào)用,即可以引用其他對象實例的name方法。

因此privateprotected的在rubyJava的定義有很大的區(qū)別:

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

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

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

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

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

Javaprivate方法不能被子類繼承;

這種方法調(diào)用的差異,也許來自于不同的面向?qū)ο罄砟睿?/SPAN>Java的面向?qū)ο髞碜?/SPAN>C++,強調(diào)類繼承關系,所以方法調(diào)用限定類繼承的層次結構當中的作用域,卻不強調(diào)對象實例作用域;而ruby的面向?qū)ο髞碜?/SPAN>smalltalk,即使是類別也是對象,因此方法調(diào)用作用域都是針對對象實例調(diào)用來設置的。

北大青鳥網(wǎng)上報名
北大青鳥招生簡章
主站蜘蛛池模板: 黄色网址进入 | 91久久香蕉国产线看观看软件 | 午夜一级毛片不卡 | 国产精品国三级国产aⅴ | 一区二区三区四区五区六区 | 美女很黄很黄 | 亚洲综合p | 亚洲成年男人的天堂网 | 欧美性高清视频免费看www | 国产成人综合95精品视频免费 | 香港一级特黄高清免费 | 亚洲精品一区国产二区 | 美女网站视频黄色 | 国产在线观a免费观看 | 日产毛片 | 荡公乱妇蒂芙尼中文字幕 | 久艹精品| 中文字幕成人免费高清在线 | 欧美黄区 | 欧美高清性刺激毛片 | 成人在线网址 | 亚洲 成人 欧美 自拍 | 一级毛片在线免费看 | 国内精自品线一区91 | 亚洲成年人在线观看 | 欧美一区二区三区视频在线观看 | 太平公主三级dvd | 中文字幕播放 | 国产精品免费一级在线观看 | 亚洲精品无码专区在线播放 | 日本乱人伦片中文字幕三区 | 亚洲福利视频一区二区三区 | 青青草色久综合网 | 国产精品免费观看视频播放 | 国产中的精品一区的 | 精品久久看| 一级毛片免费视频观看 | 午夜国产理论 | 成人毛片免费观看视频大全 | 成人手机在线 | 国产精品免费看 |