* private:私有,權限修飾符;用於修飾類中的成員(成員變量,成員函數)。
*將age私有化以後,類以外不能直接訪問
*所以得在類中提供訪問age的方式
*注意:私有僅僅是封裝的一種表現形式
*之所以對外提供訪問方式,就因爲可以在訪問方式中加入邏輯判斷等語句。
*對訪問的數據進行操作,提高代碼的健壯性。
*/
package PersonDemo;
class Person
{
private int age;
//權限 返回值 函數名(){}
public void setAge(int a){
if(a>0 && a<130)
{
age=a;
speak();
}
else
{
System.out.println("Error Data");
}
}
public int getAge() {
return age;
}
void speak(){
System.out.println("age" + age);
}
}
public class MyDemo {
public static void main(String[] args)
{
Person p = new Person();
p.setAge(-20);
//p.speak();
}
}
/*
* 構造函數對象一建立就會調用與之對應的構造函數
* 作用:可以給對象進行初始化
*
*小細節:
*當一個類中沒有定義構造函數時,那麼系統就會默認給該類加入一個空參數的構造函數。
*當在類中自定義了構造函數,系統將不再構造。
*
*構造函數和一般函數在寫法上不同。
*在運行上也有不同
*構造函數實在對象一建立就運行,給對象初始化。
*而一般方法是對象調用才執行,給是對象添加對象具備的功能
*
*一般對象建立,構造函數只運行一次。
*而一般方法可以杯該對象調用多次
*
*什麼時候定義構造函數?
*當分析事物是,該事務存在具備一些特性或者行爲,那麼將這些定義內容定義在構造函數
*/
package PersonDemo2;
class Person{
private String name;
private int age;
/*
* 構造代碼塊
* 作用:給對象進行初始化
* 對象一建立就運行,而且優先於構造函數運行
* 和構造函數的區別:
* 是給所有對象進行統一初始化
* 構造函數是給對應的對象初始化
*
*/
{
//System.out.println("Person code run");
cry();
}
Person()
{
System.out.println("A:name=" + name + ",age=" + age);
//cry();
}
Person(String n)
{
name =n;
System.out.println("B:name=" + name + ",age=" + age);
//cry();
}
Person(String n, int a)
{
name = n;
age = a;
System.out.println("C:name=" + name + ",age=" + age);
//cry();
}
public void setName(String n)
{
name = n;
}
public String getName()
{
return name;
}
public void cry(){
System.out.println("Cry");
}
}
public class PersonDemo2 {
public static void main(String[] args)
{
Person p1 = new Person();
Person p2 = new Person("lisi");
p2.setName("libusi");
System.out.println(p2.getName());
//Person p2 = new Person("lisi");
//Person p3 = new Person("wangwu", 10);
}
}
/*
* this:用於區分局部變量和成員變量同名的情況
*
* this:代表哪一個?
* this代表他所在函數所屬對象的引用。
* 哪個對象在調用,this就代表哪個。
*
* this應用:當定義類中功能是,該函數內部需要調用該函數的對象是,這是用this來表示這個對象
*/
package PersonDemo3;
class Person{
private String name;
private int age;
Person(int age)
{
this.age = age;
}
Person(String name)
{
this.name = name;
}
Person(String name, int age)
{
this.name = name;
this.age = age;
}
public void speak()
{
System.out.println("name=" + this.name + ",age=" + this.age);
this.show();
}
public void show()
{
System.out.println(this.name);
}
/*
* 需求:給人定義一個年齡是否相同的功能
*/
public boolean compareAge(Person p)
{
return this.age==p.age;
/*if(this.age = p.age)
{
return true;
}
else
{
return false;
}*/
}
}
public class PersonDemo3 {
public static void main(String[] args)
{
Person p1 = new Person(30);
Person p2 = new Person(25);
boolean b = p1.compareAge(p2);
System.out.println(b);
//Person p = new Person("lisi");
//Person p1 = new Person("zhangsan");
//p1.speak();
}
}
package PersonDemo;
/*
* this語句:用於構造函數直接互相調用
*
* 構造函數間調用要用this
*
* this語句只能定義在函數的 第一行
*/
class Person
{
private String name;
private int age;
Person(String name)
{
this.name = name;
}
Person(String name, int age)
{
//this();
this(name); //this.name =name; p(name);
this.age = age;
}
}
public class PersonDemo {
public static void main(String[] args)
{
Person p =new Person("lisi", 30);
Person p1 =new Person("lisi2", 36);
}
}