一.封装类及其使用
1.1 概念
- 将方法(函数指针)和字段(普通变量)包装到一个单元(类似结构体)中,单元以类的形式实现
- 信息隐藏,隐藏对象的实现细节,不让外部直接访问到
- 将数据和方法包装进类中,再加上具体实现的隐藏(访问修饰符),共同被称作封装,结果是一个同时带有特征和行为的数据类型
- 定义类,定义其属性和方法的过程,称之为封装类。
1.2 实例
class Student{
int age;
String name;
double score;
void introduce(){
System.out.println("name="+name+" age="+age+" score="+score);
}
void testFunc(){
System.out.println("testFunc");
}
}
public class test {
public static void main(String[] args){
Student stu1 = new Student();
stu1.age = 18;
stu1.name = "zengtiejiang";
stu1.score = 999;
stu1.introduce();
stu1.testFunc();
}
}
二.访问修饰符
2.1 概念
- 信息隐藏,是OOP最重要的功能之一,也是使用访问修饰符的的原因
- 信息隐藏的原因:
1.对模块的任何实现细节,不会影响使用该模块的代码
2.防止用户意外修改数据
3.使模块易于维护和使用(就是电脑配件)
- 访问修饰符:private,protected,public,默认
- public:该类或非该类均可访问
- private:只有该类可以访问
- protected:该类及其子类成员可以访问,同一个包中的类也可以访问
- 默认:同一个包中的类可以访问
2.2访问修饰符封装属性及方法
- 用private修饰类及其属性和方法,不允许其他类直接调用,内部public一个方法,以供调用。
三.构造方法
3.1UML类图
- 同一建模语言或标准建模语言
- 类的命名应尽量使用领域中的术语
- 应明确,无歧义,以便于以利于相互交流和理解
- 类的属性,操作中的可见性使用:+,#,-,分别表示public,protected,private
3.2概念和作用
- 构造方法负责对象初始化,为对象的属性赋合适的初始值
- 创建对象时,其类的构造方法确保在操作对象前,系统保证初始化进行
3.3语法规则
- 构造方法名与其类名一致
- 没有返回类型
- 方式实现主要为字段赋初值
3.4调用
- 构造方法的调用方法很特别,new操作符(实例化对象的时候,自动被调用)
- Java系统保证每个类都有构造方法
- 一个类可以含有多个构造方法,名字一致
四.this关键字
- 在类的方法中,this表示,调用此方法对象的引用
- 看作一个变量,它的值是当前对象的引用
- 处理方法中成员变量和形参同名的问题
- 当在方法内,需要用到调用该方法的对象时,可使用this
- 在类的构造方法中,调用this(参数)来调用该类的指定构造方法
- 总结理解:
- 可以调用当前所在类中的所有成员,
- 可以区分成员和形参。
- 可以类的构造方法内,再一次指定构造方法(必须在第一行指定),套娃。。。。。
class Student{
private int age;
String name;
double score;
private void introduce(){
System.out.println("name="+name+" age="+age+" score="+score);
}
private void testFunc(){
System.out.println("testFunc");
}
public Student(int age,String name,double score){
this.age = age;
this.name = name;
this.score = score;
this.introduce();
this.testFunc();
System.out.println("first");
}
public Student(){
this(64454,"asda",95.5);
System.out.println("second");
}
public Student(int age){
this();
System.out.println("third");
}
}
public class test {
public static void main(String[] args){
Student stu1 = new Student(18);
System.out.println("stu.name = "+stu1.name);
System.out.println("this.stu1.name = "+stu1.name);
}
}
name=asda age=64454 score=95.5
testFunc
first
second
third
stu.name = asda
this.stu1.name = asda
五.static关键字
5.1特点
- 用来修饰成员,修饰成员变量的称之为类变量(静态变量)
- 修饰成员方法,称之为类方法(静态方法)
- 类加载的时候,就会被加载,优于对象
- 用来修饰语句块,称之为静态代码块,构造方法之前执行,只执行一次,用来对静态成员做初始化
- 调用的时候,可以直接通过类名.成员访问
5.2注意
- 静态方法只能访问外部静态成员
- 静态方法中不能出现this关键字
六.方法重载
- 指方法名相同,参数列表不同的方法可同时存在,代表相似的行为或功能
- 大多数语言中不可用,Java中可用
- 重载概念:同一个类中。同名不同参的方法,称之为重载方法,注意:仅返回值不同,不能称之为重载。
- 例如:System.out.println()就是方法重载,可支持输出多种格式参数。
七.包(package)
7.1打包的意义
- 标准的Java库,是由一系列包组成的,包括Java.lang,Java.util,java.net等等
- 标准java包就是层次性包结构,就如同硬盘上嵌套的子目录一样,我们可以使用嵌套层次结构来组织包
- Java包是为了更好的组织规划代码,防止命名冲突和混乱,所以Java就出现了打包机制
- 当把类组织起来,放进一个包内时,也就给包中的成员赋予了相互访问的权限,就拥有了包内的程序代码
- 包访问权限,把类聚集在一个包之内,为这一做法提供了意义和理由
7.2包的命名
- 为保证Java包的唯一性,定义的包最好加上唯一的前缀
- 由于互联网的域名不会重复,推荐域名倒置作为唯一前缀
7.3 包的使用和权限
- 一个类可以使用包中的所有类
- 一个类可以使用其它包中的公开类
- 怎么使用其他包中的公开类
- 每个类签名上,加上完整包名
- import语句导入(eclipse:control+shift+o)
- import+特定类:在源代码文件顶部文件
7.4 包的创建
- 调用不同包的两个同名包,会优先调用同一个包内的(除非使用包类的时候,直接加上完整包名),所以最好不要同名