发表于: 2017-07-31 00:32:37
1 1058
一 今天完成的事情
5.3
5.3.3 局部变量的初始化和内存中的运行机制
a 局部变量不属于类或实例,它总是保存在其所在方法的栈内存中。
5.3.4 变量的使用规则
a 在一些条件下直接使用类变量或者实例变量来代替方法局部变量或者代码块局部变量的两个害处:
1 增大了变量的生存时间,这将导致更大的内存开销。
2 扩大了变量的作用域,这不利于提高程序的内聚性。
b 使用成员变量的几种情况:
1 用于描述某个类或某个对象的固有信息的;
若这种固有信息对这个类的所有实例完全相同,应该定义为类变量;(有static修饰)
若这种固有信息跟实例有关,各不相同,应该应该定义为实例变量;(没有static修饰)
2 需要保存该类或者实例运行时的状态信息的变量;
3 某个信息需要在某个类的多个方法之间进行共享。
c 能用代码块局部变量的地方就坚决不使用方法局部变量。
5.4
5.4.1 理解封装
a 面向对象的三大特征为:封装、继承、多态。
b 封装指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。
c 封装的优点:
1 隐藏类的实现细节。
让使用者只能通过事先预定的方法来访问数据,限制对成员变量的不合理访问。
2 课进行数据检查,从而有利于保证对象信息的完整性。
3 便于修改,提高代码的可维护性。
4 将对象的成员变量和实现细节隐藏起来,不允许外部直接访问。
5.4.2 使用访问控制符
a java提供了3个访问控制符:private、protected和public,加上default一共代表了4种访问控制级别。
b 访问控制级别从小到大的顺序为:private-default-protected-public。
c private:当前类访问权限。若一个类中的成员被private所修饰,那么此成员只能在当前类的内部被访问。使用此修饰符可以吧成员变量隐藏在该类的内部。当成员被private所修饰时,在成员所属的类之外只能通过各自对应的setter和getter方法来操作和访问成员。
setter()方法用来操作成员,在使用时此方法名称变为set+原实例变量名首字母大写,其余字母不变的格式。
getter()方法用来访问成员,在使用时名称除set变为get之外,其余变法和setter()一样。
在上述程序中,第6行报错,因为企图访问并修改已经由private所修饰的变量。
本来会想程序会按照我的想法来运行,谁知报错:
public class Temp5
{
public static void main(String[] args)
{
car car1 = new car();//定义一个car类的成员变量
//car1.age = 3;//企图修改变量car1的age属性,会报错
car1.setAge(3);
car1.setSpeedmax("150KM/h");
system.out.println("修改后的数据为:年龄为" + car1.getAge() + ",最大速度为:" + car1.getSpeedmax );
System.out.println("Temp");
}
}
class car
{
private int age = 2 ;//age被private所修饰,说明只能在当前类car中访问,先修饰符再数据类型,否则会报错。
private String speedmax = "200KM/h";//同age
public car()//定义一个构造器初始化car这个类,构造器名称必须与类名相同,而且若无返回值则不用写void
{
System.out.println(" car have " + age + "years old,and it maxspeed is " + speedmax);
}
}
那么问题就来了:setter和getter的用法不是我想象的那样。真正的用法是什么呢?
d default:包访问权限。若一个类中的成员或者一个外部类被fedault所修饰,那么此成员或者外部类可以在被相同包下的其他类访问。
f protected:子类访问权限。若一个成员被protected所修饰,那么此成员既可以被同一个包中的其他类所访问,也可以被不同包中的子类所访问。
g public:公共访问权限。若一个成员被public所修饰,那么这个成员就可以被所有类访问。
h 上面的四种访问控制符只能修饰一个类的成员,不能修饰局部变量。
i 若一个Java源文件里定义的所有类都没有使用public修饰,则这个Java源文件的文件名可以是一切合法的文件名;如果定义了一个public修饰的类,则源文件的文件名必须与public修饰的类的类名相同。
j 模块设计追求高内聚,低耦合。也就是有良好的封装。
5.4.3 package、import和import static
a package java引入包机制,提供了类的多层命名空间。若想把一个类放在指定的包结构下,则在程序开头加上下面一句话:
package 包名称;
一旦加上了该语句,该源文件里定义的所有类都属于这个包。
b import 可以向某个Java文件中导入指定包层次下某个类或者全部类,import语句位置应该在package语句之后、类定义之前,使用*号可代表相应的类。
c import static 静态导入。同样可以导入单个或者多个静态成员变量或者方法。import static 语句的位置同import。
d import可以省略写包名,而import static可以连类名都省略。
5.4.4 Java的常用包
a java.lang:包含了java语言中的核心类。无需导入,系统会自动导入。
b java.util:包含了java大量的工具类/接口和集合框架类/接口。
c java.net:包含了一些Java网络编程相关的类/接口。
d java.io:包含了一些java输入/输出编程相关的类/接口。
e java.text:包含了一些java格式化相关的类。
f java.sql:包含了Java进行JDBC数据库编程的相关类/接口。
g java.awt:包含了抽象窗口工具集的相关类/接口,这些类主要用于构建图形用户界面(GUI)程序。
h java.swing:包含了Swing图形用户界面编程的相关类/接口,这些类可用于构建平台无关的GUI程序。
二 明天完成的事情
看完书上5.5,5.6.5.7
昨天的日报师兄还没有评价呢。
昨天的日报师兄还没有评价呢。
昨天的日报师兄还没有评价呢。
想提交系统姐姐说今天已经提交过了不能提交。那么坐等凌晨。
评论