Java关键知识点之面向对象部分

汇总:Android小白成长之路_知识体系汇总【持续更新中…】

面向对象设计

  • 三大特性:
    • 封装:属性私有化,访问权限控制,增强数据安全性,不让其他用户随意访问和修改数据。同时简化编程,使用者无需在意实现细节,只需要通过开放的外部接口调用即可
    • 继承:为了复用,父类实现共同的属性和方法,子类继承父类,拥有这些共同的属性和方法,并实现自己特有的属性和方法,java中一个类只能继承一个父类,子类可以重写父类的方法
    • 多态:
      • 编译时多态:即重载,根据不同的参数选择其中一个同名函数
      • 运行时多态:即重写,子类重写父类方法,在运行时调用不同的子类,就动态调用了不同的子类的同名方法,增加代码灵活度

  • 静态变量:如果将变量定义为static,这个类的所有实例都将共享该变量,它属于类,不属于任何具体的对象

  • 静态常量:通常和final一起使用,使其不可改变,通常用于定义后就不做改变的数据

  • 访问域:

    • public:可以被任意类访问

    • private:只能在当前类中使用

    • protected:可以被所有子类访问,也可以被同包名中的类方法,多用于继承

    • default:也就是不加任何修饰符,只允许在同一个包中使用

      修饰符 当前类 同一个包名 不同包名子类 不同包名非子类
      public
      protected ×
      default × ×
      private × × ×
  • 方法参数:

    • 值传递:表示方法接收的是参数的值
    • 引用传递:表示方法接收的是参数的地址
    • 在方法里可以改变引用传递的参数,但不能改变值传递的参数的变量值。也就是说,值传递传进来的是数据的拷贝,而引用传递传进来的是对象本身
    • java中都是值传递的,即使传进去的是对象,也是值传递,会拷贝一份对象,只不过这两个对象都指向同一个地址。当拷贝的对象的数据改变,也就是地址中的数据改变,那么原本的对象的数据也会跟着改变,但如果把拷贝的对象引用删除,却不会影响原本的对象
  • 重载:多个方法有相同的名字,不同的参数就称之为重载,但返回值是否相同不是重载的标准

  • 变量初始化:成员变量可以不显式初始化就使用,会被赋予默认值,但不推荐这样做。局部变量必须初始化才能使用,否则在使用的时候会报错

  • 构造函数:仅当类没有提供任何构造函数的时候,系统才会提供一个默认的构造函数

  • finalize方法:java中没有析构器,因为java有自动的垃圾回收器,不需要人工回收,如果想要在垃圾回收器清楚对象前需要做一些释放资源的操作,可以添加finalize方法,这个方法在垃圾回收器清除对象之前调用,但实际应用中一般不这样做,因为垃圾回收器的时机很难判断,也就不知道这个方法何时会被调用

包和路径

  • 编译器在编译源文件的时候不会检查目录结构,因此如果一个类并没有放在它所定义的包路径下,编译也不会报错,只要它不依赖别的包,但是程序运行的时候会报错,虚拟机会找不到这个类
  • 类路径:类存储在文件系统的子目录中国,类路径必须与包名匹配

猜你喜欢

转载自blog.csdn.net/Nbin_Newby/article/details/120511774