java封装和包

通过DOS命令运行编译java文件:

1>运行,输入cmd;

2>进入DOS界面,输入cd: 文件名路径,回车

3>输入所在盘,回车

4>输入javac java文件名.java

5>输入java java文件名

如:


一、封装:将客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的对象将属性和实现的细节进行隐藏。

封装的作用:

1>安全、方便

2>将可变性进行隔离

3>提高代码的重用性

属性的封装。见下面的代码:

class Student{
	String name;
	int age;
	public void show()
	{
		System.out.println(name+",今年"+age+"岁");
	}
}
public class lesson {
	public static void main(String args[])
	{
		Student s=new Student();
		s.name="许增强";
		s.setAge(-20);
		s.show();
	}
}

如果不将age的修饰符设为private,那么在类外就可以随意更改它的值,如上,将age=-20,就会出现错误,因为年龄不可能为负数。

所以要隐藏age的属性,使其值在类外不能被随意修改。就需要加上private修饰符。

对私有成员属性进行访问的方法的命名规范:

1>public void setXxx(参数) 为参数的赋值提供接口

2>public 类型 getXxx() 获取参数值

代码修改如下:

class Student{
	String name;
	private int age;
	public void setAge(int age)
	{  
		if(age>=0 && age<=150)
	    {
			this.age=age;
			show();
	    }
		else System.out.println("有这样的年龄呀~");
	}
	public void show()
	{
		System.out.println(name+",今年"+age+"岁");
	}
	public int getAge()
	{
		return age;
	}
}
public class lesson {
	public static void main(String args[])
	{
		Student s=new Student();
		s.name="许增强";
		//s.age=-20; age为私有成员变量,不能被类外直接访问
		s.setAge(-20);
	}
}

二、包:类似于操作系统中的文件夹。

1>用于对多个java文件进行分门别类的管理。

2>解决命名冲突的问题(名字相同,内容不同),操作系统对文件夹的名字不区分大小写,但是包名区分大小写。

Java程序中包的定义:

package 包名;

注意:一定要放在java程序中的第一句。

对带包的java文件进行编译:javac -d . java文件

运行时必须带上包的完整类名:java 包名.类名

包名的命名规范:

1>如果定义的包有多级:a.b.c.d(即a包中包含子包b,b包中包含子包c....),包名区分大小写。

2>包名的命名不能以纯数字命名。

3>公司做软件开发,一般会将URL地址反转作为包名。

如:蓝狐培训URL地址为:www.bluefox.com.cn。

这个时候包的命名为:cn.com.bluefox.项目名。

带包的java程序编写,以eclipse为例:

新建一个lesson工程,单击src,点击New,选中package,新建一个包com


,然后在com包中新建一个子包bluefox,方法同上,在名字中输入com.bluefox:


在bluefox中创建student类,单击com.bluefox选择New\Class,在Name中输入类名student即可:


在student类中输入:

package com.bluefox;

public class student {
	String name;
	int age;
	public void show()
	{
		System.out.println("我叫"+name+",今年"+age+"岁");
	}
}

同样在com包中创建一个TestStudent类,单击com选择New\Class,在name中输入TestStudent类.

在TestStudent类中输入:

package com;

public class TestStudent {
	public static void main(String args[])
	{
		student s=new student();
		s.name="许增强";
		s.age=20;
		s.show();
	}
}

编译TestStudent,会出现编译问题:

Student是一个不能解决的类,即student类没有被导入进来。

由于TestStudent是在com包中,而student类在com包中的子包bluefox包中,不在同一阶,所以需要将student类导入到TestStudent类中才能运行。

包的导入:

1>import 包名.子包....类名;  

2>import 包名.*; //将包中的所有类都导入进来

将student类导入到TestStudent类可以利用Eclipse工具导包快捷方式:alt+/和ctrl+shift+o。

package com;
import com.bluefox.student;

public class TestStudent {
	public static void main(String args[])
	{
		student s=new student();
		s.name="许增强";
		s.age=20;
		s.show();
	}
}

编译后依然有编译问题。

TestStudent对name,age没有访问权限。

因为在student类中并没有对name,age设置访问权限,所以name,age只有在同一个包中才能访问,或者将name,age设置为public就可以被其他包中的类访问。

Student修改后如下:

package com.bluefox;

public class student {
	public String name;
	public int age;
	public void show()
	{
		System.out.println("我叫"+name+",今年"+age+"岁");
	}
}

运行就可以了。

由于eclipse中默认包视图为并列的,要想层次清楚,可以单击window---  Navigation---Show View menu---Package presentation---Hierarchical,

变成如下图所示:

可以清楚的看清包含关系。

eclipse中的图标:

:source folder(存放java源文件的文件夹).
:package,包.

对于bulid path,如果单击src,点击Bulid Path后选择remove to bulid path,可以看到src、com等包都作为文件夹而存在,而不是包。

这个时候再编译就会出现:


编译器不包含main类型,因为要编译java文件是编译java的源文件。所以碰到这个错误的时候,记得将src作为一个source folder才能编译,点击src---

Bulid Path---use as source folder,这个时候编译就可以通过了。

Java中常用的包:

1>java.lang.*; 包含java编程的基本类,程序编程中自动导入

2>java.sql.*;   定义了一系列于java对数据库访问支持

3>java.util.*;   工具类,集合框架,数据结构等。

4>java.net.*;   包含实现网络编程的类

5>java.io.*;  提供有关数据流、对象序列和文件系统的系统输入/输出类

6>java.awt.*;   包含创建UI和绘图以及图像处理的类,用户图形界面GUI

7>java.swing.*; 同上。







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值