一,跟封装相关的知识点(重点)
1.构造方法
作用:
给对象的成员变量(属性)进行初始化
格式特点:
public Student() {
}
a.方法名与类名相同(大小也要与类名一致)
b.没有返回值类型,连void都没有
c.没有具体的返回值,可以加return;但是一般不加
d.在创建对象的时候,系统会帮我们调用构造方法.构造方法不能使用对象调用
构造方法重载:
public Student() {
}
public Student(String name,int age) {
}
重载:
方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表
注意事项:
a.如果我们没有给出构造方法,系统会自动提供一个无参构造方法.
b.如果我们给出了构造方法,系统将不再提供默认的无参构造方法.
c.建议永远自己给出无参构造方法.eclipse可以一键生成.
2.构造方法和setXxx()方法区别
a.构造方法是给对象中属性进行初始化
b.setXxx()方法是修改属性值
c.使用构造方法,属性太多会非常臃肿,难以阅读(超过4个一般不推荐使用)
d.使用setXxx()方法更灵活(想设置哪个就设置哪个),
开发中更多得使用这种,也是主流(Spring框架采用).
3.创建一个对象的步骤
Student s = new Student();
a.Student.class加载进内存
b.声明一个Student类型引用s
c.new Student();在堆内存创建对象
d.给对象中属性默认初始化值
e.如果有显示初始化值,进行显示初始化
f.构造方法进栈,对对象中的属性赋值,构造方法弹栈
g.将对象的地址值赋值给Student类型引用s
4.static关键字
static的作用:
资源共享.
什么时候使用static关键字?
当一个内容,被该类下所有对象所共享的时候,咱们就能考虑使用static.
特点:
a.随着类的加载到方法区(不会随对象消失)
b.优先于对象存在:随着字节码文件的加载而加载的,那时候还没有对象呢!
c.被类的所有对象共享(最重要的特点)
举例:
咱们班级的学生应该共用同一个班级编号(静态)
但是每位同学都有自己唯一的学号(非静态)
d.可以通过类名调用,Person.country,不用创建对象(推荐)
注意事项:
a.在静态方法中是没有this关键字的
(因为this指的是一个具体的对象,而静态在加载到内存时还没有具体的对象)
b.静态方法只能(直接)访问静态的成员变量和静态的成员方法
总结:
静态只能直接访问静态
静态方法如果想使用非静态的内容,必须先创建对象,再使用(了解,一般没人这么干)
class Demo {
int num1 = 10; //非静态的成员变量
static int num2 = 20; //静态的成员变量
public static void print2() { //静态的成员方法
//System.out.println(this.num1); //静态方法不能直接访问非静态变量
System.out.println(new Demo().num1);//通过创建对象间接访问非静态变量
System.out.println(num2);
}
}
5.静态变量和成员变量的区别
静态变量也叫类变量,成员变量也叫对象变量
a.所属不同
静态变量属于类,所以也称为为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
b.内存中位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
c.内存出现时间不同(生命周期)
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
d.调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用
二,如何使用及制作帮助文档(了解)
1.main方法格式详细解释
public : 被jvm调用,所以权限要足够大.
static : 被jvm调用,不需要创建对象,直接类名.调用即可
void : 被jvm调用,不需要有任何的返回值
main : 只有这样写才能被jvm识别,main不是关键字
String[] args : 以前是用来接收键盘录入的 ,args是唯一可以修改的
2.工具类中使用静态
如果一个类中的方法都是静态的,需要自己写一个私有的构造方法.防止他人创建对象.
3.说明书的制作过程
javadoc -d 指定的文件目录 -author -version ArrayTool.java
@author(提取作者内容)
@version(提取版本内容)
@param 参数名称//形式参数的变量名称
@return 函数运行完返回的数据
3.Math类
由于Math类在java.lang包下,所以不需要导包
因为它的成员全部是静态的,所以私有了构造方法
random():返回带正号的 double 值,该值大于等于 0.0 且小于 1.0
int number = (int)(Math.random()*100)+1
总结:
什么是封装?
把一些数据和行为打包起来,使得类实现者可以修改封装内的东西而不影响外部调用者;
而外部调用者也可以知道自己不可以碰哪里;这就提供一个良好的合作基础.
什么时候使用封装?
封装易变动的部分,可以减少变动对整个系统带来的影响,
并且可以有效地控制系统的复杂程度
举例:之前学习的成绩优良及格差
|
|