JAVA构造函数是不是封装_Java 封装与构造函数
面向?qū)ο笏枷胨枷氲娜齻€特征:封裝,繼承,多態(tài)。
封裝:
表現(xiàn):函數(shù)就是一個最基本的封裝體,類也是一個封裝體。
好處:1、提高了代碼的復用性,
2、隱藏了實現(xiàn)細節(jié),可以對外提供可以訪問的方法,便于調(diào)用者的使用。
3、提高了安全性。
下面通過私有化(private)來對封裝進行理解:
class Person
{
//屬性:
private int age;? ? //age被修飾為了私有
//行為:
void speak()
{
System.out.println("age="+age);
}
}
年齡已被私有,錯誤的值無法賦值,可是正確的值也賦值不了,需要提供訪問方式。
對變量的訪問操作有兩個動作:賦值(設置 set),取值(獲取 get)
所以,對私有的變量訪問的方式就是 setAge? getAge
//定義對age賦值的方法。
void setAge(int a)
{
age = a;
}
//定義一個獲取age值得方法。
int getAge ()
{
return age;
}(以后再描述事物,屬性都私有化,并提供setXxx? getXxx方法對其進行訪問。)
記住:私有僅僅是封裝的體現(xiàn)形式而已。
構(gòu)造函數(shù):
為了描述事物更準確,發(fā)現(xiàn)事物對應的很多對象一創(chuàng)建時,就有了一些初始化的數(shù)據(jù)。這需要通過“構(gòu)造函數(shù)來完成”。
構(gòu)造函數(shù)怎么在代碼中體現(xiàn)?
1、沒有返回值類型。因為構(gòu)造對象,創(chuàng)建完就結(jié)束,不需要結(jié)果,void也不要寫,。
2、構(gòu)造函數(shù)名稱和類名一致。
3、沒有具體的返回值。
在Person類中定義一個構(gòu)造函數(shù)
class Person
{
//屬性:姓名,年齡。
private String name;
private int age;
//一初始化,既沒有姓名,又沒有年齡。
Person()
{
}
//定義構(gòu)造函數(shù),對象一創(chuàng)建就具備姓名。
Person(String n)
{
//將接收到的值賦值給對象的name
name = n;
}
//一初始化既有姓名,又有年齡。
Person(String n,int a)
{
name = n;
age = a;
}
//行為。
public void speak()
{
System.out.println("name="+name+",age="+age);
}
}
class PersonDemo2
{
public static void main(String[] args)
{
Person p = new Person("lisi");//對象創(chuàng)建時,必須會調(diào)用對應的構(gòu)造函數(shù),因為對象需要初始化。
//? ? ? ? Person p2 = new Person("wangwu",23);
}
}
構(gòu)造函數(shù)的細節(jié): 1,一個類中可以有多個構(gòu)造函數(shù),它們的存在是以重載的形式體現(xiàn)的。 2,構(gòu)造函數(shù)中也是有return語句的,用于結(jié)束初始化動作的。 3,構(gòu)造函數(shù)是否能被private修飾呢?能,作用:其他程序無法創(chuàng)建該類的對象。
構(gòu)造函數(shù)和一般函數(shù)的區(qū)別? 1,寫法不一樣。 2,運行上有差別,對象一創(chuàng)建就會調(diào)用對應的構(gòu)造函數(shù)。 一般方法是對象創(chuàng)建后,才會調(diào)用所需的一般函數(shù)。 問:有了構(gòu)造函數(shù)初始化姓名,那么還需要setName方法嗎? 需要,因為對象創(chuàng)建后,如果需要對數(shù)據(jù)進行修改,可以通過set完成。 3,構(gòu)造函數(shù)在對象創(chuàng)建時,僅調(diào)用一次(初始化動作只做一次,而且先執(zhí)行)。
一般方法可以被對象調(diào)用多次。
總結(jié)
以上是生活随笔為你收集整理的JAVA构造函数是不是封装_Java 封装与构造函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车辆保险忘了
- 下一篇: 中国天眼向世界开放 带领人类看的越来越远