9、面向对象三大特征(封装、继承、多态)—封装

JAVA封装

封装

  • 将类的某些信息隐藏在类的内部,不允许外部程序直接访问
    通过该类提供的方法来实现对隐藏信息的操作和访问
  • 隐藏对象的信息
  • 留出访问的接口
    例子:ATM机
  • 特点:
    -1、只能通过规定的方法访问数据
    -2、隐藏类的实例细节,方便修改和实现

无论封装的内部发生什么变化,只要对外接口不发生变化,那么对外就无影响

JAVA实现封装

  1. 修改属性的可见性(访问修饰符设为private)

  2. 创建getter/setter方法(设为public用于属性的读写)
    这个就相当于给的对外接口

  3. 在getter/setter方法中加入属性控制语句(对属性值的合法进行判断)
    作用:排除逻辑隐患

    • 只有getter方法的属性为只读属性
      getter方法有返回值
    • 只有setter方法的属性为只写属性

		1、JAVA中一个包里不能存在同名类
		2、包的命名:域名倒序+模块+功能
		3、域名全部小写
		4、包名:必须放在JAVA源文件中的第一行
		5、建议每个包内存储信息功能单一

1、import 包名.; 加载对应包下所有的类 import 包名.类名; 加载对应包下指定的类
建议采用加载指定类的方式,提高加载效率
2、在程序中直接写名相应包名来调用,如com.imooc.animal.CatTest tex=new com.imooc.animal.CatTest();
3、导入的包涵盖多个类名相同的类时,会优先调用能够直接解析到的类
4、通过import 包名.
; 的方式加载时,只能加载到该包下面直接的类

package和import的使用

  • 打包–package
    包名一般为小写,而类名的第一个字母一般为大写,这样在引用时,可以明显的分辨出包名和类名。如果在类的定义之前没有使用package定义包名,那么该类就属于缺省的包。
  • 包的作用
    可以更好的组织类,包与文件夹类似,文件夹可以将不同的文件放在同一个文件夹中,而包也可以将不同的类文件放在同一包中。减少类名的冲突问题,这也与文件夹类似,同一文件夹中的文件不能重名,不同文件中的文件可以重名,同一包中的类名不能重复,不同包中的类名可以重复。对包中的类起了一定的保护作用,详见Java的访问控制(在后面的课程中会详细讲解~~)。
  • 包的使用
    使用package关键字指明类所在的包。package语句必须在文件的最前面。编译时可使用javac –d . Test.java自动产生包需要目录。可以使用java testPackage.Test来执行编译后的代码。
  • 导入–import
    使用了包机制后,如果在一个类中使用了其他包中的类,需要使用import来引入。
  • import的使用
    直接引用指定的类,如import java.util.Vector。
    引用一个包中的多个类,如import java.awt.号代替类名,但不能代替包名,如import java.awt.,只引用java.awt下的类,而不引用java.awt下的子包里面的类。import java.awt.F,这种使用方法是错误的。import语句在所有类定义之前,在package定义之后。import只告诉编译器及解释器哪里可以找到类、变量、方法的定义,而并没有将这些定义引入代码中。
  • 包中类的使用
    如果要使用的类是属于java.lang包的,那么可以直接使用类名来引用指定的类,而不需要加上包名,因为包java.lang不用显示使用import,它是缺省引入的。
    如果要使用的类在其它包(java.lang除外)中,那么可以通过包名加上类名来引用该类,如java.awt.Font。对于经常要使用的类(该类在其它包中),那么最好使用import引用指定的包,如java.awt.*。如果import引入的不同的包中包含有相同的类名,那么这些类的使用必须加上包名。

常用的系统包

  1. java.lang
    包含Java语言基础的类,该包系统加载时默认导入
    如:System、String、Math
  2. java.util
    包含Java语言中常用工具
    如:Scanner、Random
  3. java.io
    包含输入、输出相关功能的类
    如:File、InputStream

static 关键字

定义方法: 访问修饰符 static 类型说明符 变量名字;
访问方法:可以使用两种方法。
①、对象名.静态属性名;(使用这种方式编译器会警告,但不会报错)
②、类名.静态属性名;

特性:
1、在类中定义后,无论这个类实例化多少个对象,用static 修饰的成员属性,都会使用同一片内存空间,改变一个static属性的值,其他的都会改变
2、static属性随着,所有实例化的对象销毁后才销毁,和普通属性:随着他所属对象一起销毁。不同

  • static + 属性
    静态属性、类属性,调用方式:类.静态属性
  • static + 方法
    静态方法、类方法,调用方式:类.静态方法
  • static不能用来修饰class(没有静态的类)
  • 方法内的局部变量不能添加static修饰符
  • 成员方法中可以直接访问类的静态成员;静态方法中不能直接访问非静态成员,只能直接调用静态成员(包括属性和方法),或者通过对象实例化后,以对象.成员的方式进行调用;静态方法中不能使用this

代码块{}

  • 在语句中出现大括号就叫代码块{}
  • 大括号出现在方法里叫普通代码块(是顺序执行,先出现,先执行)
  • 大括号直接在类中定义叫构造代码块(在对象创建时被调用,优先于构造方法执行,多个构造代码块顺序执行;)
  • 在构造代码块前加static,叫做静态代码块(类加载时调用,优先于构造代码块执行,多个静态代码块顺序执行;)
  • 无论产生多少类实例,静态代码块只执行一次。

在一个方法体中,

如果定义了方法的一个局部变量temp

那么在其中的普通代码块,则不允许重复定义同名变量

其中存在一个作用范围的问题,在一个变量的作用范围内,不允许出现重复定义的,
这和类成员变量与方法局部变量不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值