1 Java面向對象思想
1.1面向對象三大特徵
(一)封裝性:對外部不可見
(二)繼承:擴展類的功能
(三)多態性:方法的重載,對象的多態性
2封裝性
1. 類中並不是所有的信息都能讓用戶可見的,因此隱藏這些信息就很有必要。這就是面向對象對封裝的要求。
2. 封裝性的目的:保護當前類的某些屬性和方法不被外部所見。
3. 封裝性的實現:Java的封裝是通過private修飾符來聲明屬性和方法實現的。
作用域 |
public |
protected |
default |
private |
當前類 |
√ |
√ |
√ |
√ |
同一包 |
√ |
√ |
√ |
|
子孫類 |
√ |
√ |
|
|
其他包 |
√ |
|
|
|
4. 實現該屬性的get/set方法,爲外部所訪問。
5. 封裝後的屬性不能像以前一樣通過“對象.屬性”訪問該屬性了。通過對象調用對應的get/set方法。
6. 例:
package com.dzh.classdemo;
/**
* private 對屬性和方法進行封裝
*
* @author Daisy
*
*/
class Person {
private String name; //private修飾實現封裝性
private char sex;
private int age;
// 通過get/set方法便於外部訪問或修改這些屬性
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age>=0){ // 如果年齡小於0,年齡的值爲默認值0
this.age = age;
}
}
public void print(){
System.out.println("姓名:"+getName()+",性別:"+getSex()+",年齡:"+getAge());// 調用get方法獲取屬性的值
}
}
public class ClassDemo01 {
public static void main(String[] args) {
Person zhangsan = new Person();
zhangsan.setName("zhangsan");// 調用set方法進行賦值
zhangsan.setSex('男');
zhangsan.setAge(-1);
zhangsan.print();
}
}
7. 匿名對象的使用:new Person().屬性/方法;//適用於只使用一次的情況