首页 > 代码库 > Java面向对象之封装
Java面向对象之封装
有多个对象都要用到同一个功能或者多个功能,那就先定义一个工具类,之后调用
class ArrayTool
{
public int getMax(int[] arr){
int max=0;
for(int x=1;x<arr.length;x++)
{
if(arr[x]>arr[max])
max=x;
}
return arr[max];
}
public int getMin(int[] arr){
int min=0;
for(int x=1;x<arr.length;x++)
{
if(arr[x]<arr[min])
min=x;
}
return arr[min];
}
public void selectSort(int [] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[x]>arr[y])
swap(arr,x,y);
}
}
}
public void bubbleSort(int []arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=0;y<arr.length-x-1;y++)
{
if (arr[y] > arr[y+1])
swap(arr,y,y+1);
}
}
}
public void swap(int []arr,int a,int b)
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
}
public class hello {
public static void main(String[] args)
{
int[] arr={3,4,1,8};
ArrayTool tool=new ArrayTool();
int max=tool.getMax(arr);
System.out.println("max="+max);
}
}
虽然可以通过建立ArrayTool这个对象对数组调用批量工具对数组进行操作,但是发现了问题
1.对象是用于封装数据的,可是ArrayTool对象并未封装持有数据
2.操作诗句的每一个方法都没有用到ArrayTool对象中的特有数据
这时就考虑,不需要对象
可以将ArrayTool 中的所有方法都定义为静态的,直接通过类名调用
但是还可以将其new对象,通过构造对象私有化,阻止建立对象,还有swap这样的函数不需要暴露给外界
class ArrayTool
{
private ArrayTool(){}
public static int getMax(int[] arr){
int max=0;
for(int x=1;x<arr.length;x++)
{
if(arr[x]>arr[max])
max=x;
}
return arr[max];
}
public static int getMin(int[] arr){
int min=0;
for(int x=1;x<arr.length;x++)
{
if(arr[x]<arr[min])
min=x;
}
return arr[min];
}
public static void selectSort(int [] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[x]>arr[y])
swap(arr,x,y);
}
}
}
public static void bubbleSort(int []arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=0;y<arr.length-x-1;y++)
{
if (arr[y] > arr[y+1])
swap(arr,y,y+1);
}
}
}
private static void swap(int []arr,int a,int b)
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
}
public class ArrayToolDemo {
public static void main(String[] args)
{
int[] arr={3,4,1,8};
int max=ArrayTool.getMax(arr);
System.out.println("max="+max);
}
}
一个类中默认会有一个空参数的构造函数;
这个默认的构造函数的权限和所属类一致(public or no);
如果类被public 修饰,那么默认的构造函数也带public修饰符;
如果类没有被public修饰,那么默认的构造函数也没有public修饰。
执行顺序
Person p=new Person(参数);
类加载,静态代码块加载,属性(非静态)加载,默认初始化,显示初始化(直接赋值),构造代码块加载,构造函数初始化
Java面向对象之封装
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。