Information Hiding RevisitedThis section discusses a subtle problem th การแปล - Information Hiding RevisitedThis section discusses a subtle problem th ไทย วิธีการพูด

Information Hiding RevisitedThis se

Information Hiding Revisited

This section discusses a subtle problem that can arise when defining certain kinds of classes. The problem does not apply to any class we define whose instance variables are either of a primitive type - such as int, double, char, and boolean - or of the type String. So we can define lots of classes without being concerned with this problem.


Privacy Leaks
A class can have instance variables of any type, including any class type. These often can be natural and useful things to have. However, using instance variables of a class type can introduce a problem that requires special care. The problem occurs because variables of a class type contain the memory address of the location where an object is stored in memory.

Example :
suppose that goodGuy and badGuy are both variables of the class type Pet. Now suppose that goodGuy names some object and our program executes the following assignment statement :

badGuy = goodGuy;

After this assignment statement is executed, badGuy and goodGuy are two names for the same objects. So if we change badGuy, we will also change goodGuy.

Let's give this assignment statement a bit more context to see its implication :

Pet goodGuy = new Pet ();
goodGuy.set("Faith Guard Dog", 5, 75);
Pet badGuy = goodGuy;
badGuy.set("Dominion Spy", 1200, 500);
goodGuy.writeOutput():

Because badGuy and goodGuy name the same object, this code will produce the following output :

Name : Dominion Spy
Age : 1200 years
Weight : 500.0 pounds

The change to badGuy also changed goodGuy because goodGuy and badGuy name the same object.
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
ซ่อนข้อมูล Revisitedส่วนนี้กล่าวถึงรายละเอียดปัญหาที่อาจเกิดขึ้นเมื่อกำหนดบางชนิดของคลาส ปัญหาใช้ระดับใดเรากำหนดตัวแปรอินสแตนซ์เป็น ชนิดดั้งเดิม - int คู่ อักขระ และบูลี น - หรือชนิดสายอักขระ ดังนั้น เราสามารถเรียนโดยไม่ได้เกี่ยวข้องกับปัญหานี้มากมายการรั่วไหลความเป็นส่วนตัวชั้นเรียนได้ตัวแปรอินสแตนซ์ของชนิดใด ๆ รวมถึงชนิดประเภทใด เหล่านี้มักจะได้สิ่งที่เป็นธรรมชาติ และมีประโยชน์ให้ อย่างไรก็ตาม การใช้ตัวแปรอินสแตนซ์ของคลาสชนิดสามารถแนะนำปัญหาที่ต้องดูแลเป็นพิเศษ ปัญหานี้เกิดขึ้นเนื่องจากตัวแปรของคลาสชนิดประกอบด้วยหน่วยความจำอยู่ของสถานที่เก็บวัตถุในหน่วยความจำตัวอย่าง:สมมติว่า goodGuy และ badGuy เป็นทั้งตัวแปรคลาสชนิด Pet ตอนนี้ สมมติว่า goodGuy ชื่ออ็อบเจกต์ของเราดำเนินการคำสั่งการกำหนดต่อไปนี้: badGuy = goodGuyหลังจากดำเนินการคำสั่งนี้กำหนด badGuy และ goodGuy สองชื่อสำหรับวัตถุเดียวกัน ดังนั้นถ้าเราเปลี่ยน badGuy เราจะเปลี่ยนแปลง goodGuyลองให้คำสั่งนี้กำหนดเนื้อหาเล็กน้อยเพื่อดูปริยายของ: สัตว์เลี้ยง goodGuy = Pet ใหม่() goodGuy.set ("ศรัทธารักษาสุนัข" 5, 75); สัตว์เลี้ยง badGuy = goodGuy badGuy.set ("ไอศวรรย์ Spy", 1200, 500); goodGuy.writeOutput():เนื่องจาก badGuy และ goodGuy ชื่อวัตถุเดียว รหัสนี้จะสร้างผลลัพธ์ต่อไปนี้: ชื่อ: ไอศวรรย์ Spy อายุ: ปี 1200 น้ำหนัก: 500.0 ปอนด์การเปลี่ยนแปลงเพื่อ badGuy เปลี่ยน goodGuy ยังเนื่องจาก goodGuy และ badGuy ชื่อวัตถุเดียวกัน
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
ข้อมูลการซ่อนมาเยือนในส่วนนี้จะกล่าวถึงปัญหาที่ลึกซึ้งที่สามารถเกิดขึ้นเมื่อกำหนดบางชนิดของการเรียน ปัญหาใช้ไม่ได้กับระดับที่เรากำหนดซึ่งมีตัวแปรเช่นมีทั้งชนิดดั้งเดิม - เช่น int, คู่ถ่านและบูล - หรือชนิด String ดังนั้นเราจึงสามารถกำหนดจำนวนมากของการเรียนโดยไม่ต้องกังวลกับปัญหานี้. ส่วนบุคคล Leaks ชั้นสามารถมีตัวแปรเช่นชนิดใด ๆ รวมทั้งชนิดของชั้นใด เหล่านี้มักจะเป็นสิ่งที่เป็นธรรมชาติและมีประโยชน์ที่จะมี อย่างไรก็ตามการใช้ตัวแปรเช่นประเภทชั้นสามารถนำปัญหาที่ต้องดูแลเป็นพิเศษ ปัญหาเกิดขึ้นเนื่องจากตัวแปรประเภทชั้นมีที่อยู่หน่วยความจำของสถานที่ที่วัตถุถูกเก็บไว้ในหน่วยความจำ. ตัวอย่าง: สมมติว่า Goodguy และ Badguy เป็นตัวแปรทั้งสองของสัตว์เลี้ยงชนิดชั้น ตอนนี้สมมติว่าชื่อ Goodguy วัตถุบางอย่างและโปรแกรมของเรารันคำสั่งที่ได้รับมอบหมายต่อไปนี้: Badguy = Goodguy; หลังจากที่คำสั่งที่ได้รับมอบหมายนี้จะถูกดำเนินการ Badguy และ Goodguy มีสองชื่อสำหรับวัตถุเดียวกัน ดังนั้นหากเราเปลี่ยน Badguy เราก็จะเปลี่ยน Goodguy. ขอให้คำสั่งที่ได้รับมอบหมายนี้บิตบริบทมากขึ้นเพื่อดูความหมายของมันสัตว์ Goodguy = สัตว์เลี้ยงใหม่ (); goodGuy.set ("ศรัทธายามสุนัข", 5, 75) สัตว์เลี้ยง Badguy = Goodguy; badGuy.set ("การปกครอง Spy", 1200, 500); goodGuy.writeOutput (): เนื่องจาก Badguy และ Goodguy ชื่อวัตถุเดียวกันรหัสนี้จะผลิตผลลัพธ์ต่อไปนี้: ชื่อ: การปกครอง Spy อายุ: 1200 ปีน้ำหนัก : 500.0 £ เปลี่ยนแปลง Badguy ก็เปลี่ยน Goodguy เพราะ Goodguy และ Badguy ชื่อวัตถุเดียวกัน




























การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
การซ่อนสารสนเทศมาเยือน

ส่วนนี้กล่าวถึงปัญหาที่ลึกซึ้งที่สามารถเกิดขึ้นเมื่อกำหนดบางชนิดของชั้นเรียน ปัญหาไม่ใช้ระดับใด เรากำหนดตัวแปรที่มีอินสแตนซ์มีทั้งประเภท - ดั้งเดิมเช่น int , char , คู่ , บูลีน - หรือประเภทของสตริง ดังนั้นเราสามารถกําหนดจํานวนชั้นเรียนโดยไม่ต้องเป็นกังวลกับปัญหานี้ .



การรั่วไหลของความเป็นส่วนตัวชั้นสามารถมีตัวอย่างตัวแปรของชนิดใด ๆรวมทั้งห้องประเภทใด เหล่านี้มักจะสามารถธรรมชาติที่มีประโยชน์และสิ่งที่ต้องมี อย่างไรก็ตาม การใช้อินสแตนซ์ของชนิดตัวแปรคลาสสามารถแนะนำปัญหาที่ต้องการการดูแลพิเศษ ปัญหานี้เกิดขึ้นเนื่องจากตัวแปรประเภทของชั้นเรียนประกอบด้วยหน่วยความจำที่อยู่ของสถานที่ที่วัตถุจะถูกเก็บไว้ในหน่วยความจำ เช่น


:สมมติว่ากู๊ดกาย แบดกายทั้งสองตัวแปรและประเภทของห้องสัตว์เลี้ยง ตอนนี้สมมติว่ากู๊ดกายชื่อวัตถุบางอย่างและโปรแกรมของเราดำเนินการต่อไปนี้กำหนดงบ :

กู๊ดกาย แบดกาย = ;

หลังจากงานนี้ เป็นงบดำเนินการ แบดกายกู๊ดกายเป็นสองชื่อและวัตถุเดียวกัน ดังนั้น ถ้าเราเปลี่ยน แบดกาย เราก็จะเปลี่ยน

กู๊ดกาย .ให้งบงานนี้เป็นบิตเพิ่มเติมบริบทเพื่อดูความหมาย :

กู๊ดกายสัตว์เลี้ยงสัตว์เลี้ยงใหม่ = ( ) ;
กู๊ดกายตั้ง ( ศรัทธา " หมา " , 5 , 75 ) ;

กู๊ดกายสัตว์เลี้ยง แบดกาย = ; แบดกาย ชุด ( " อำนาจ " สายลับ , 1200 , 500 ) ;
กู๊ดกาย . writeoutput() :

เพราะ แบดกาย และกู๊ดกายชื่อวัตถุเดียวกัน รหัสนี้จะผลิตออกต่อไปนี้ : ชื่อ

: การปกครองสายลับ
อายุ 1200 ปี

500.0 น้ำหนัก : ปอนด์การเปลี่ยนแปลง แบดกายยังเปลี่ยนกู๊ดกายเพราะกู๊ดกาย แบดกายชื่อและวัตถุเดียวกัน
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2025 I Love Translation. All reserved.

E-mail: