1. 程式人生 > >7.封裝,static,方法重載

7.封裝,static,方法重載

對象數組 返回 特點 ring eth pac protect 輸出 args

一.訪問修飾符
1.public:公共的,所有在該項目中都可見
2.protected:受保護的,同包,以及子類不同包可見
3.默認:就是不寫修飾符。同包
4.private:私有,只在同類中

二.封裝
1.定義:將信息和實現的細節封裝到類中,對外只提供方法的訪問
2.作用:隱藏實現細節,可以簡化工作流程。隱藏信息,可以防止數據被隨意修改
3.封裝步驟:
a。將類中的屬性訪問修飾符改為私有的
b。寫一對公共的方法來操作私有的屬性:set/get方法
c。在set或者get方法中加入業務限制來修改屬性

三.static關鍵字
1.定義:靜態關鍵字,可以修飾屬性,方法和代碼塊。
2.作用:是在類被加載時,被靜態修飾的東西都被加載就緒。
靜態屬性和靜態方法可以通過類名直接訪問
3.註意事項:靜態方法不能訪問外部的非靜態成員,靜態方法中不能使用this關鍵字
4.使用場景:常用的工具類方法可以寫成靜態。

四.方法的重載
1.定義:是在同一個類中,出現同名方法,但參數列表必須不同(個數,類型,順序)
2.特點:
必須在同一個類中
參數列表必須不同
與訪問修飾符和返回值無關

五.例子

/*
 * 1.編寫一個人類,封裝他的性別屬性,要求性別只能賦值為男或女,其他不接受。
編寫測試類,創建該對象給他性別屬性賦值,打印輸出其性別
 */
package com.class1103;

import java.util.Scanner;

public class Class01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc=new Scanner(System.in);
		Man m=new Man();
		System.out.println("請輸入性別");
		m.setSex(sc.next());
		System.out.println("性別是"+m.getSex());
		
		System.out.println("請輸入年齡");
		m.setAge(sc.nextInt());
		System.out.println("年齡是"+m.getAge());
	}

}

class Man{
	private String sex;
	private int age;
	public void setSex(String sex)
	{
		if(sex.equals("男")||sex.equals("女"))
		{
			this.sex=sex;
		}else{
			System.out.println("是人妖");
		}

	}
	public String getSex()
	{
		return sex;
	}
	public void setAge(int age)
	{
		if(age>=1&&age<=150)
		{
			this.age=age;
		}else{
			System.out.println("是千年老人妖");
		}
	}
	public int getAge()
	{
		return age;
	}
}

/*
 * 對象數組
 */
package com.class1103;

public class Class02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Student[] stu=new Student[20];
		stu[0]=new Student("關羽",58,"男");
		stu[1]=new Student("張飛",55,"男");
		stu[2]=new Student("趙雲",50,"男");
		stu[3]=new Student("黃忠",67,"男");
		stu[4]=new Student("馬超",47,"男");
		for(int i=0;i<5;i++)
		{
			System.out.print(stu[i].name+" ");
			System.out.print(stu[i].age+" ");
			System.out.print(stu[i].sex+" ");
			System.out.println();
		}
	}

}

class Student{
	String name;
	int age;
	String sex;
	
	public Student(String name,int age,String sex)
	{
		this.name=name;
		this.age=age;
		this.sex=sex;
	}
}

package com.demo1103;
/**
 * 實現信息的封裝
 * @author allen
 *
 */
public class Demo1 {
	private double balance;
	
	public void setBalance(double balance){
		if(balance<0){
			System.out.println("騙子死開");
			return;
		}else{
			System.out.println("你就是我親爹啊");
			this.balance += balance;
		}
	}
	
	public double getBalance(){
		return balance;
	}
	
	public static void main(String[] args) {
		Demo1 d = new Demo1();
		d.setBalance(-1000);
		System.out.println("您當前的余額是:"+d.getBalance());
	}
}

  

package com.demo1103;

import java.util.Arrays;
/**
 * 靜態關鍵字和方法重載案例
 *
 */
public class Test {
	String name;
	static int age;
	
	static{
		System.out.println("我是靜態塊");
	}
	
	public void test(int a,String b){
		System.out.println("你好");
	}
	//重載
	private int test(){
		return 1;
	}
	
	public static void hello(){
		age = 1;
		System.out.println("hello");
	}
	
	public static void main(String[] args) {
		int a = 1;
		a = 1;
		Test.hello();
	}
}

  

  

  

7.封裝,static,方法重載