封裝:對外不可見,外部不能直接訪問,只能通過接口來修改和獲取。
封裝使用的關(guān)鍵字就是private
this關(guān)鍵字:特殊的變量,引用當(dāng)前實例(對象)
構(gòu)造方法的作用:初始化對象的屬性,實例化出來的對象的屬性的內(nèi)容是指定的值,不再是默認(rèn)值。
方法的重載:方法名相同,參數(shù)列表不同
static的使用方法
package day08;
import java.util.Date;
public class Student {
private int sid;//學(xué)號
private String sname;//姓名
private int age;//年齡
private boolean isMale;//性別 true:男 false:女
private Date birth;//生日
private int grade;//成績
private static int count;//學(xué)生人數(shù)
static{
System.out.println("加載學(xué)生模板");
}
/**
* @param sid 表示學(xué)號
* @param sname 表示姓名
* @param age 表示年齡
* @param isMale 表示性別
* @param grade 表示成績
*/
public Student(int sid,String sname,int age,boolean isMale,int grade){
this.sid = sid;
this.sname = sname;
this.age = age;
this.isMale = isMale;
this.grade = grade;
count++;
}
/**
* 無參的構(gòu)造方法
*/
public Student(){
count++;
}
/**
* 獲取學(xué)生數(shù)量
* 靜態(tài)的成員方法里面不能使用非靜態(tài)的成員
* @return
*/
public static int getCount() {
return count;
}
使用方法
(1)將人數(shù)的屬性設(shè)置成static;
(2)有參數(shù):參數(shù)列表中不需要加是static
(3)設(shè)置一個函數(shù)用來返回count值
父類和子類的應(yīng)用
package day10;
/**
* 員工類
* @author yangzc
*
*/
public class Emp {
private long id;//工號
private String name;//姓名
private char gender;//性別
private double salary;//薪資
public Emp(){}
public Emp(long id, String name, char gender, double salary) {
super();//調(diào)用父類的無參構(gòu)造方法
this.id = id;
this.name = name;
this.gender = gender;
this.salary = salary;
}
public void show(){
System.out.println(""+id+","+name+","+gender+","+salary);
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
package day10;
/**
* 項目經(jīng)理類型
* @author yangzc
*
*/
public class PM extends Emp{
private int exp;//工作年限
private double bonus;//項目獎金
/**
* 無參構(gòu)造方法
*/
public PM(){
setId(System.currentTimeMillis());
setName(""+System.currentTimeMillis());
setGender('男');
setSalary((int)(Math.random()*20000*100)/100.0);
exp=3;
bonus=3000.0;
}
/**
*
* @param id
* @param name
* @param gender
* @param salary
* @param exp
* @param bonus
*/
public PM(long id,String name,char gender,double salary,int exp,double bonus){
setId(id);
setName(name);
setGender(gender);
setSalary(salary);
this.exp = exp;
this.bonus = bonus;
}
public void show(){
System.out.println(""+getId()+","+getName()+","+getGender()+","+getSalary()+","+exp+","+bonus);
}
public int getExp() {
return exp;
}
public void setExp(int exp) {
this.exp = exp;
}
public double getBonus() {
return bonus;
}
public void setBonus(double bonus) {
this.bonus = bonus;
}
}
列如 員工表和程序員表
1.將員工的屬性寫出來;
2.寫出一個無參數(shù)的列表 和一個有參數(shù)的列表
3.然后寫出一個函數(shù),打印出員工表的內(nèi)容
1.將程序員繼承員工表,將員工表中沒有的屬性寫下來
2.寫出一個無參數(shù)列表 和有參數(shù)列表
無參數(shù)列表:
因為父類的屬性都是封裝起來的,所以說沒有辦法直接調(diào)用,要直接使用set函數(shù)去修改,括號中直接填寫要修改的內(nèi)容;
有參數(shù)列表:
因為父類中的屬性都是封裝起來的,所以說參數(shù)列表中的內(nèi)容寫 父類的set函數(shù)去修改,括號中直接填寫要修改的屬性;
3.然后寫出一個函數(shù),打印出子類中的信息,父類的信息內(nèi)容需要用get函數(shù)去調(diào)用;
4.通過主程序中去直接調(diào)用該函數(shù),就可以得到父類以及子類中的值。
super關(guān)鍵字的用法
package day10;
/**
* 程序員類型
* @author yangzc
*
*/
public class SE extends Emp{
private int hot;
/**
* 無參的構(gòu)造方法
*/
public SE(){
//調(diào)用父類的有參構(gòu)造方法初始化對象的屬性
super(System.currentTimeMillis(),""+System.currentTimeMillis(),'男',(int)(Math.random()*20000*100)/100.0);
hot=100;
}
/**
*
* @param id 保存輸入的工號
* @param name 保存輸入的姓名
* @param gender 保存輸入的性別
* @param salary 保存輸入的工資
* @param hot 保存輸入的關(guān)注度
*/
public SE(long id,String name,char gender,double salary,int hot){
super(id,name,gender,salary);//調(diào)用父類的有參構(gòu)造方法
this.hot = hot;
}
/**
* 顯示程序員的基本信息
*/
public void show(){
System.out.println(""+getId()+","+getName()+","+getGender()+","+getSalary()+","+hot);
}
public int getHot() {
return hot;
}
public void setHot(int hot) {
this.hot = hot;
}
}
- super()的作用:是指父類的構(gòu)造方法的函數(shù)
1.軟件中有自動編寫的程序
2.無參列表:
super()括號中需要寫入父類相應(yīng)屬性的內(nèi)容,填寫進(jìn)去
有參列表:
super括號中需要填入父類中相應(yīng)的屬性;
3.建立一個函數(shù),將函數(shù)的中的屬性內(nèi)容打印出來,通過get函數(shù) 來獲取父類的屬性內(nèi)容。
重寫父類中的打印內(nèi)容
如果子類中的函數(shù)內(nèi)容與父類的打印內(nèi)容的條件不符合,需要將在子類中的重新編譯,但是函數(shù)名要與父類的函數(shù)名相同,要不然的話會報錯。