详解JAVA的封装

 更新时间:2017年04月13日 09:47:08   作者:乘风而归  
Java面向对象的三大特性:封装、继承、多态。下面对三大特性之一封装进行了总结,需要的朋友可以参考下

第一节 什么是JAVA中的封装

面向对象的三大特性:封装、继承、多态

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

2.好处

a只能通过规定的方法访问数据

b隐藏类的实例细节,方便修改和实现

3.封装的实现步骤

修改属性的可见性,改为设为private;创建getter/setter方法,用于属性的读写,创建一个特定的方法,一般是gettersetter方法,可以在gettersetter方法中加入属性控制语句,对属性值的合法性进行判断,举例来说:

public float getScreen(){
return screen;
}
public void setScreen(float screen){
this.screen=screen;
}

第二节 使用包管理JAVA中的类

封装的类名可能冲突,用包可以解决

1.包的作用,管理Java文件夹,管理同名文件冲突

2.定义包,package关键字

3.系统中的包

java.(功能).(类)

java.lang.类 包含java语言基础的类

java.util.类 包含java与语言中的各种工具类

java.io.类 包含输入输出相关功能类

4.包的使用

import 使用关键字可以在某个文件中使用其他文件中的类,全部都是小写

import com.imooc.music.Myclass;

import com.*是包下所有的类

第三节 JAVA中的访问修饰符

修饰我们属性和方法的访问范围

private 本类

默认 本类 同包

protected 本类 同包 子类

public 本类 同包 子类 其他

第四节 JAVA中的this关键字

1.this关键字代表当前对象,this.属性代表当前对象的属性,this.方法代表当前对象的方法

2.封装对象属性的时候经常会用到this关键字,例如this.a=a;

第五节 什么是JAVA中的内部类

1.什么是内部类:

内部类是定义在另一个类里面,与之对应,包含内部类的类被称为外部类。

 2.为什么要将一个类定义在另一个类里,清清爽爽独立不好吗?

内部类的主要作用是:

内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中其他类访问该类。

内部类中的方法可以直接访问外部类的所有数据,包括私有数据

内部类所实现的功能使用外部类同样可以实现,是有时使用内部类会更加方便。

3.内部类有几种:

成员内部类;静态内部类;方法内部类和匿名内部类

内部类其实也是外部类的一个成员,只不过这个成员类型是一个类,调用时要先实现外部类,然后才能找到该类下的内部类实现。例:

public class HelloWorld{
public class Inner{
方法show();
}
main函数{
HelloWorld h=new HelloWorld();
Inner i=h.new Inner();
i show;
}
}

定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去new一个内部类对象,也就是:内部类 对象名=外部类对象.new 内部类();

第六节 JAVA中的成员内部类

内部类中最常见的也就是成员内部类,即普通内部类。

 成员内部类的使用方法:

1.内部类定义在外部类的内部,相当于外部类的一个成员变量的位置,内部类可以使用任意访问修饰符,如public private protected等

2.内部类中定义的方法,可以访问外部类中的数据,而不受访问修饰符的影响

3.定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去new一个内部类对象,也就是:内部类 对象名=外部类对象.new 内部类();

4.编译含内部类的程序时,会出现两个class文件,其中第二个是外部类的.class文件,第一个是内部类.class文件,成员内部类的class文件总是这样,外部类名$内部类名.class 这是内部类.class名字 

注意:

a.外部类不能直接使用内部类的成员和方法,可以先创建内部类对象,然后通过它们的对象来访问其成员变量和方法;

b.如内部类和外部类具有相同的成员变量和方法,内部类默认访问自己的成员变量或方法。如果要访问外部类的成员变量,可以使用this关键字,外部类.this.属性。如:

第七节 JAVA中的静态内部类

静态内部类是static修饰的内部类,这种内部类的特点是:

1、静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问

2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员

3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类(); 

运行结果,访问外部类中的b:1

访问内部类中的b:2

第八节 JAVA中的方法内部类

方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。

注意:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。

希望本文所述可以对需要的朋友有些帮助

相关文章

  • Java程序执行时间的2种简单方法

    Java程序执行时间的2种简单方法

    这篇文章介绍了Java程序执行时间的2种简单方法,有需要的朋友可以参考一下
    2013-09-09
  • java性能分析jconsole详解

    java性能分析jconsole详解

    这篇文章主要介绍了java性能分析jconsole详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • 聊一聊Java中的Steam流

    聊一聊Java中的Steam流

    当我们需要处理的数据量很大的时候,为了提高性能,就需要使用到并行处理,这样的处理方式是很复杂的,流可以帮助开发者节约宝贵的时间,让以上的事情变得轻松,本文就和大家聊一聊Java中的Steam流,感兴趣的同学跟着小编一起来看看吧
    2023-07-07
  • Java多态到底都有啥好处

    Java多态到底都有啥好处

    Java中的多态性有两种类型:编译时多态(静态绑定)和运行时多态(动态绑定)。方法重载是静态多态的一个例子,而方法重写是动态多态的一个例子,接下来通过本文给大家分享Java多态到底教了我干啥?有啥好处,一起了解下吧
    2021-05-05
  • 解决安装mysqlclient的时候出现Microsoft Visual C++ 14.0 is required报错

    解决安装mysqlclient的时候出现Microsoft Visual C++ 14.0 is required报错

    这篇文章主要介绍了解决安装mysqlclient的时候出现Microsoft Visual C++ 14.0 is required报错问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • Java序列化原理详解

    Java序列化原理详解

    这篇文章主要介绍了Java序列化原理详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • SpringBoot中的@CrossOrigin注解详解

    SpringBoot中的@CrossOrigin注解详解

    这篇文章主要介绍了SpringBoot中的@CrossOrigin注解详解,跨源资源共享(CORS)是由大多数浏览器实现的W3C规范,允许您灵活地指定什么样的跨域请求被授权,而不是使用一些不太安全和不太强大的策略,需要的朋友可以参考下
    2023-11-11
  • SpringBoot入门之集成Druid的方法示例

    SpringBoot入门之集成Druid的方法示例

    这篇文章主要介绍了SpringBoot入门之集成Druid的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • hashCode方法的使用讲解

    hashCode方法的使用讲解

    有许多人学了很长时间的Java,但一直不明白hashCode方法的作用,我来解释一下吧。
    2013-03-03
  • java获得mysql和oracle链接的类

    java获得mysql和oracle链接的类

    这篇文章主要介绍了java获得mysql和oracle链接的类,可实现基于jdbc的mysql与oracle数据库连接,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07

最新评论