4.10课程总结

一、封装

1、为什么要使用封装

(1)案例中的代码有缺陷

     a、属性随意访问。

     b、不合理的赋值。     Penguin p =new Penguin( );

                                           p.health = -1000;

2、什么是封装

      封装的概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法拉埃实现对隐藏信息的操作和访问。

      封装的两大原则:a、把尽可能多的东西隐藏起来,对外提供便捷的接口     

                                   b、把所有的属性隐藏起来

3、如何实现封装

        a、修改属性的可见性(设为private,防止错误的修改)

        b、创建公有的getter/setter方法(用于属性的读写)

        c、在getter/setter方法中加入属性控制语句(对属性值的合法性进行判断)

              例: private String name;

                      public Vote(String name) {
         this.name=name;
                 }
              public String getName() {
                return name;
                }

4、封装的好处

     a、便于使用者正确使用系统,防止错误属性修改

     b、有助于系统纸浆的松耦合,提高系统的独立性

     c、提高软件的可重用性

     d、降低了构建大型系统的风险   

二、包

1、为什么需要包

    a、文档分门别类,易于查找和管理

    b、使用目录解决文件同名的冲突问题

2、创建包

a、包名由小写字母组成,不能以圆点开头或结尾

     package mypackage;

b、包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名

     package net.javagroup.mypackage;

c、包名后续部分根据机构内部规范填写

     package net.javagroup.research.powerproject;

3、导入包

a、package 一个类里面只能有一个package,且是在类的第一句。在不同包下可以存在相同名字的类(与电脑的一致)。

b、包的命名一般都是已网站倒序来命名的如:以com/cn的开头+部门名+项目名+这个包的作用。包名都是由小写字母组成的!

c、导入包由import+包名。建议用哪个数据就导入哪个,不要直接一下子导全部(*)。

四、成员变量和局部变量

1、两者的作用域不同:

     局部变量只能在定义它的方法中被使用,出了方法就不能被使用;

    (全局)成员变量是创建在类中但又在方法之外的变量,它的作用范围是整个类;

2、初始值不同:

     java会自动给成员变量(全局变量)赋一个初始值;

     并不会给局部变量赋初始值;

3,使用注意规范:

 局部变量规范:

a、在同一个方法中不能同时存在同名的局部变量;不同的方法可以存在同名局部变量;

b、在同一个方法中,局部变量的优先级更高;

4、存放空间不同:

 之所以它们的作用范围不同是因为它们分配到的内存空间不一样

 a、我们创建的成员变量是被java虚拟机分配到堆中的,所以成员变量用完并不会立刻被销毁

 b、同样局部变量是被分配到栈中的;局部变量出了命名范围就等于被销毁了,不能再使用。

关于栈和堆:

以前我们学二维数组的时候也说过,我们的外围数组是放在堆中的,

这个数组中的成员数组是放在栈中的。

            堆                              栈                    静态空间

            成员变量                    局部变量           静态变量

            二维数组的主数组       成员数组


在一个方法中不允许有同名局部变量

但在一个类的不同方法中允许存在相同名字的变量

在一个类中成员变量和局部变量同名时,局部变量拥有更高的优先级

成员变量系统会默认给它初始值

可以在其他类中创建该类的对象并使用成员变量

成员变量在整个类中都是可以使用的

局部变量使用时一定要给他一个初始值

局部变量的作用域仅限于定义的方法内


五、 static修饰符

被static修饰的变量称为 静态 变量(类变量);

被static修饰的方法称为 静态 方法;

被static修饰的代码块被称为静态代码块;当java虚拟机加载类时,就不执行该代码块;


特点:
a、可通过类名直接访问
b、被static修饰的的变量会在栈和堆之外创建一个静态空间,不手动销毁它是一直存在的;
c、在实例方法内不允许创建 静态变量;

类的成员变量可分为:
实例变量:没有被static修饰的
备注:什么叫实例;例如我们定义一个 int a ;其中a就叫做这个类的实例;

静态变量:被static修饰的变量;

特点(实例变量):
(1)在内存中有多个拷贝,互不影响;
(2)不能被静态方法访问

特点(静态变量):
(1)在内存中只有一个拷贝,不论作何修改都会改变它这唯一的变量;
(2)可以在实例方法和静态方法中直接被访问;在其它类中可以通过类名来访问;

注:如果类的实例都包含有一个相同的常量属性,
    我们就可以将这个属性定义为静态常量属性,
    从而节省空间使用;

所以,除了final这些不变的常量,
最好不要用过多的static,不然容易出bug;

特点(静态方法):
(1)静态方法中不能使用this和spuer
(2)不可以直接访问所属类的实例变量和实例方法
(3)可以直接访问类中的静态变量和静态方法
(4)必须被实现

特点(实例方法):
(1)可直接访问所属类的实例变量和实例方法、静态变量、静态方法

解释:
被static修饰的变量在内存中就只有一个备份,所以不论任何操作都会改变这个变量的值;
static变量
类成员变量包括
类变量(静态变量)
a、被static修饰的变量
b、在内存中只有一个拷贝
c、类内部,可以在任何方法内直接访问静态变量
d、在其它类中可以通过类名直接访问,不需要创建对象
实例变量
a、没有被static修饰的变量
b、每创建 一次变量就会为实例变量分配一次内存;实例变量可以在内存中有多个拷贝,互不影响
被static修饰的变量和方法在其他类中调用时不用创建对象直接可以用类名.方法和变量就可以实现
static final;实例常量
静态方法:可以直接通过类名访问
a、静态方法中不可以使用this和super
b、不能直接访问所属类的实例变量和实例方法
c、可以直接访问静态变量和静态方法
实例方法:通过实例访问
a、可以直接访问所属类的静态变量,静态方法,实例变量和实例方法
静态方法必须被实现
main就是最常用的实例方法



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值