原创

JavaSE-面向对象之封装

温馨提示:
本文最后更新于 2024年07月21日,已超过 271 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我
  • 什么是封装?
    • 将某些东西包装在一起,然后以新的完整形式呈现出来。
  • 封装的目的和意义?
    • 提高安全,不能让外部随便调用和更改内部属性。
    • 方便我们控制业务员逻辑。
  • 如何实现封装?
    使用private修饰成员变量。然后在给这些成员变量根据相应的需求提供相应的public的set和get方法。
  • get和set方法的意义和书写形式?
    权限修饰符 void setXxxx(变量类型 xxxx){
        this.xxxx = xxxx;
    }
    权限修饰符 变量类型 getXxxx(){
        return xxxx;
    }
    
  • this关键字
    • this指代当前对象。
    • this在不会发生混淆的时候可以省略。
    • this(参数列表);this();表示调用本类的构造方法。
    • this调用构造方法的时候,必须写在第一行。
    • this.方法名();调用本类的方法。
    • this.属性名;访问本类的属性。
  • 什么是方法重载?返回值不同能不能作为方法重载的条件?形式参数名不同能不能作为重载条件?
    • 方法重载就是相同的方法名,形式参数不一样。
    • 返回值类型不一样不构成重载,方法的重载和返回值无关。只与方法名和形式参数有关。
    • 形式参数名不同不能作为能不能构成重载的条件,因为参数类型一样的话,是不会构成重载,只有参数类型不一样,或个数,或顺序不一样才会构成重载,前提是方法名相同。
  • 构造方法可不可以重载?
    可以,不同的形参下就构成了重载。
  • static关键字的作用?【重点】
    • 可用于修饰成员变量,成员方法,静态代码块,让这些优先于类加载,所以这些用static修饰的类和静态代码块只能访问静态的成员变量。
    • 修饰成员变量: 称为类变量,可以通过类名访问,也可通过对象访问,建议使用类名。在内存中只会存在一份,所有对象都共享。
    • 修饰成员方法:静态方法,属于类方法,优先与对象加载到内存的静态方法区。
    • 修饰代码块:只会执行一次,一般用于加载配置文件。 在类加载的时候执行。
    • 静态代码优先与类构造器执行。
  • 静态变量和成员变量的区别?【重点、难点】
    • 静态变量又称类变量。静态变量是一个类加载之后所有所有的对象都是共用这一个变量。也就是说,它只会存在一份,所有的对象都是访问这一个,修改了之后所有的对象里面的值也都是修改了。只有这个程序结束了才会回到这个类变量给定的初始值。
    • 成员变量是只有在这个类new出来之后才会有的,而且每个对象的这个变量都是互不影响的。这个对象给了这个变量一个值,那个对象给了另外的值,这两个值是不会覆盖谁的值,互不影响的。
  • 包,打包和导包分别使用什么关键字?
    • 打包 package 包名
    • 导包 import 包名.类名
  • 一个java文件中允不允许有多行package语句?
    不能,而且package只能在第一行。
  • 允不允许有多个import语句?
    可以。
    在我理解中:导包的本质应该就是简化书写吧,不适用import,也是可以找到这个对象,如下
    java.util.Scanner sc = new java.util.Scanner(System.in);
    
    这样也是可以的,但是这样的话,很麻烦,而且代码会看起来很凌乱。
  • 哪个包中的类不需要导包?
    java.lang
  • 成员变量、局部变量和静态变量的区别
成员变量 局部变量 静态变量
定义位置 类中,方法外 方法中,方法签名中 类中,方法外
初始化 有默认初始化 没有默认初始化,要赋值才能使用 有默认初始化
调用方式 对象实例调用 ---- 对象调用(不推荐),类名调用
存储位置 堆中 栈中 方法区
生命周期 与类共存 与方法共存 与类共存
别名 实例变量 ---- 类变量
正文到此结束