java学习day03—封装

java学习之封装,加碎片知识:

(萌新每日记录,求指点)内容参考自b站动力节点疯狂java讲义.

最难不过坚持,最易不过放弃。

一、方法小知识

形参个数可变的方法:

public class Product {
    public static void test(int a,String...books){
        //books被当作数组处理
        for(String tmp:books)
        {
            System.out.println(tmp);
        }
        System.out.println(a);
    }

    public static void main(String[] args) {
           test(2,"这个就像数组一样","字符串类型的","好方便");
    }
}

输出应该是:
这个就像数组一样
字符串类型的
好方便
2
注意:个数可变的形参只能处于形参列表的最后。

二、封装

1、封装的优点:

(1) 提高代码的安全性。
(2)提高代码的复用性。
(3)高内聚”:封装细节,便于修改内部代码,提高可维护性。
(4)“低耦合”:简化外部调用,对外提供简单的操作入口,便于调用者使用,便于扩展和协作。
实现封装需要从两方面考虑:
·将对象的成员变量和实现细节隐藏起来,不允许外部直接访问。
·把方法暴露出来,让方法控制对这些成员变量进行安全的访问和操作。

2、封装步骤

1、属性私有化,使用private关键字修饰(所修饰数据只能在本类中访问)。
2、对外提供操作入口
·修改调用set方法
·读取调用get方法
3、set方法命名规范:(例子)
public void set+属性名(形参){
}
get方法命名规范:
public int get+属性名(){
return 属性;
}
注意:方法的属性名首字母应该大写(命名规范)。
在这里举个例子,如果有一个person类没有加以封装,对其中的age成员变量就可以随意操作,你可以对其赋值为负值,但这是错的,而封装侯就可以在setAge()方法中对年龄进行判断,输出正确的年龄,这个set/get方法和c++中的什么好像很像(只了解过,忘了,嘿嘿嘿。),封装后你就可以在setter中增加自己的控制逻辑,保证不会出现与实际不符的情形。

三、package,import和import static

1、package机制,我理解它是提供了类的多层命名空间,解决了类的命名冲突等问题。同一个包下可以存放功能相关的一组类。
在一个包使用不同包中的其他类时,需要使用该类的全名,如在lee包下的Hello类中创建lee包下子包sub中的Apple类时,必须加上包前缀:

lee.sub.Apple a=new lee.sub.Apple();

2、为了简化编程便引入了import关键字,可以向某个java文件中导入指定包层次下的某个类或全部类,则上述类导入可以写成:

import lee.sub.Apple

使用import package.subpackage…*:可以导入包下的全部类.
导入包后就可以直接使用这些类而不才需要加上包前缀。
3、import static是一种静态导入语法,可以导入指定类的单个静态成员变量,方法或全部静态成员变量,方法,前者格式如下:

import static package.subpackage...Classname.filedName|methodName;
//filedName为静态成员变量名,methodName为静态方法名

导入全部静态成员变量,方法的格式如下:

import static package.subpackage...ClassName.*; 

就作用而言,使用import可以省略写包名,而import static可以连类名都省略:

 import static java.lang.System.*;
import static java.lang.Math.*;
public class StaticImportTest()
{

  public static void main(String[] args)
  {
  out为java.lang.System类的静态成员变量,PI为java.lang.Math类的静态成员变量
    out.prntIn(PI);
  }
}

四、碎片化知识:

1、栈中主要存储方法体中的局部变量。
2、方法的代码片段以及整个类的代码片段都被存储到方法区内存当中,在类加载的时候这些代码片段会载入。
3、使用new运算符创建的java对象,存储在堆内存中。对象内部有实例变量,所以实例变量存储在堆内存中。
4、变量分类:
·局部变量【方法体中声明】
·成员变量【方法体外声明】
·实例变量【前边修饰符没有static】
·静态变量【前边修饰符有static】
5、静态变量存储在方法区内存中。
6、最先有数据的是方法区内存,垃圾回收器主要针对堆区。
7、JVM【java虚拟机】主要包括:栈内存,堆内存,方法区内存三个内存空间。
8、一个java源文件中只能有一个公共类:
(请参考这位的博客:
https://www.cnblogs.com/zhukunqiang/p/6652787.html)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值