面向对象(OOP)

Posted xingrui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象(OOP)相关的知识,希望对你有一定的参考价值。

  • 学习线路

      初学:
          熟悉语法
      进阶:
          1、23种设计模式
          2、6中开发原则
      高级:
          1、优化
          2、架构
          3、安全

    概念

      类:一类具有相同特性的事物的抽象描述,用一个java类表示。
      成员变量:抽取的属性。
      方法:抽取的行为。
      对象:是类的实体。(object/instance)

类与对象

    1、如何声明一个类
        [public 等修饰符] class 类名称{
            类成员列表;
        }
    2、创建对象
        类名称 对象名 = new 类名称();
    3、属性:位置在类中,方法外
      
      为属性赋值:对象.属性 = 值;
        (1)属性有默认值
            和数组的元素的默认值是一样的:
            byte,short,int,long:0
            float,double:0.0
            char:u0000
            boolean:false
            引用数据类型:null
  • 权限修饰符(*****)
修饰符 本类 本包 子类 任何地方 可修饰
private ? ? ? ? 属性、方法、内部类、构造器
default ? ? ? ? 属性、方法、内部类、构造器、外部类
protected ? ? ? ? 属性、方法、内部类、构造器
public ? ? ? ? 属性、方法、内部类、构造器、外部类

方法

  • 声明方法

      1、 声明方法
    
          1、先声明后使用
          2、位置:类中方法外
          3、格式:
          [修饰符] 返回值类型 方法名(形参列表){
              方法体(实现该功能的代码);
          }
      2、形参:定义/声明方法时()中的参数。
        实参:调用方法时传入的参数。
      3、形参是基本数据类型时,传值;当是引用数据类型时,传引用(地址)
    注意:String对象不可变,还有包装类等对象
  • 调用方法

      1、静态方法
          非本类    类名.方法名();
          本类   方法名();
      2、非静态方法
          对象.方法名();
  • 方法的特点

      1、先声明后调用
      2、不调用不执行,调用一次执行一次
      3、方法最多有一个返回值;可以没有返回值,当返回值数量大于1时,用数组或者集合装起来后,返回
      4、方法可以嵌套调用,但是不可以嵌套定义。
  • 方法的重载(Overload)

      定义:(1)相同类中的两个或多个方法(2)方法名相同,形参列表不同(类型、个数、顺序)(3)与返回值类型无关。
  • 命令行参数:给主方法(main)传递实参。

          cmd 模式下》》   java   类名称   实参1  实参2  实参3 ....
  • 可变参数

      某个方法调用时,实参的个数是可变的。  
      (1)一个方法最多有一个可变参数
      (2)必须放在最后
         public int qiuhe(int... num){//num本质是数组
              int sum = 0;
              for(int i=0;i<num.length;i++){
                  sum += num[i];
              }
         }
      如何调用?
          (1)传递相同类型的参数0~n个
          (2)可以传递相同类型的数组

构造器

1、有什么作用
    (1)创建对象时,并为属性赋值。
2、有什么特点
    (1)所有类都有构造器,如果这个类没有显示声明构造器,将默认有无参构造,若加了构造器,则不再有无参构造器。
    (2)构造器可以重载
    (3)构造器名和类名相同
3、如何声明
    【修饰符】 构造器名(){}
    【修饰符】 构造器名(形参列表){}
4、怎么调用构造器
    在非本类中   类名 变量名 = new 类名();

this关键字

用法:
    this.属性;
        当成员变量与局部变量重名时,成员变量前加this,加以区分。
    this.方法();
        this代表当前对象。
    this();
        表示访问本类的无参构造,有形参时,访问有参构造。必须在构造器中第一句。

super关键字

    super.属性
        当子类与父类的某个可见的属性“重名”时,用“super.”表示访问父类的属性
    super.方法();
        当子类需要调用父类重写的方法时,需要加"super."
    super();
        只能出现在子类构造器的首行。
        默认出现的是super(),表示调用父类的无参构造器。你写不写我都存在。
        如果父类没有无参构造,必须在子类的构造器首行,用super(实参列表)调用父类的构造器。

包的概念 package

  • 作用

      1、避免类的重名
      2、用于控制访问权限
      3、划分项目的结构层次,通常将功能相近的类划分到同一个包中
  • 规则

      1、用package定义包,位于源文件首部
      2、包的命名规范 xxx.yyy.zzz(通常以所在公司的域名的倒置)
  • 导包 import

      1、位置:package和class之间
      2、import 包名.类名;
        import 包名.*;

    构造器

    1、每个类都有构造器
    2、当没有显示声明构造器时,默认提供无参的构造器;当显示声明构造器时,则不再提供无参构造器,若需要还需显示声明。

    构造器的特点
    1、没有返回值
    2、构造方法名和类名一样
    3、可以重载





以上是关于面向对象(OOP)的主要内容,如果未能解决你的问题,请参考以下文章

面向对象编程(OOP)

Java入土---面向对象(OOP)

python中面向对象(oop)

OOP 面向对象

面向对象编程

面向切面编程AOP是面向对象编程OOP的补充