java 面向对象

来源:互联网 发布:软件开发行业市场前景 编辑:程序博客网 时间:2024/06/16 02:37
  • 面向对象 :
    • 什么是面向对象:是一种思想,
    • 将功能封装起来称为对象,强调具备了功能的对象,面向对象是基于面向基础的
    • 一个对像的组成:基本由属性+方法组成. 即 特征 和行为

      • 对象是具体的事物,
    • 类 是对对象的抽象
    • 方法 对象执行的操作
    • 属性 变量—->成员变量:类内,方法外
    • —–>局部变量:方法内部

      • 类 :
    • 类是模子 ,确定了对象将会拥有的特征(属性),和行为(方法);
    • 类指具有相同属性和方法的一组对像的集合,
    • 类是对象的类型,不同于int 类型,具有方法
      *
      *java定义成员变量时可以对其进行初始化,如果不对其初始化,Java会使用默认值对其初始化,
    • 数值 0; char \0000 ; boolean false; 所有引用类型 null
      *
      *java 中方法参数的传递是”值传递”;;;;
      *
      *
      *封装:
      *关键词的属性:
      *public 公开的 ;整个文件,项目都具有访问权限
      *private 私有 ; 只作用于当前类;
      *this ; 调用当前属性,或者当前对象,就近
      *super : 调用父类的构造方法
    • //overload 重载 override 重写
      *
    • 构造方法:
    • 构造对象时调用的方法,用来给对象进行初始化.
    • 特点:
    • 1,方法名与类名相同
    • 2,不用定义返回值
    • 3,没有具体的返回值
      *默认构造方法:
    • 一个类中如果没有定义过构造方法,那么该类中会有一个默认的空参构造函数.
    • 如果类中定义了指定的构造方法,那么类中的默认构造函数就会消失.
    • 注意:多个构造方法是以重载的形式存在的.
    • 重载:方法名相同,参数类表不同(个数,数据类型,顺序).与返回值类型无关.
    • 只有型参的名称不同,不能构成方法的重载
      *构造方法有重载 构造方法没有重写
      *普通方法有重载 普通方法有重写(重写继承父类的方法)
      *
      *构造函数和一般函数的区别:
    • 1 :构造方法:对象创建时就会调用与之对应的构造函数,对对象进行初始化
    • 一般方法:对象创建后,需要方法功能时才调用
    • 构造方法: 对象创建时,会调用,只调用一次
    • 普通方法: 对象创建后,可以调用多次
      *
      *静态: static
    • 使用static声明的成员变量称为静态变量;
    • 使用static声明的方法称为静态方法;
    • 静态变量,静态方法又称为类变量,类方法
      *静态变量和静态方法的调用方式
    • 1类名.静态方法/静态属性
    • 2对象名.静态方法/静态属性//一般不用.因为静态一般不new 对象..减少内存占用
      *
      *static 的特点:
    • 1:static 是一个修饰符,用来修饰成员变量
    • 2:static修饰的成员被所有的对象共享 归属于类
    • 3:static优先于对象存在,因为static的成员随着类的加载就已经存在了
    • 4:static修饰的数据是共享数据,对像中存储的是特有数据.
    • static的使用注意
    • 1,静态方法只能访问静态类,非静态方法可以调用静态属性
    • 2,静态方法只能调用静态属性,静态属性
    • 3,静态方法中不可以使用this,super 关键字
    • 4,主函数是静态的.
      *
      *成员变量和静态变量的区别
      *
    • 1:生命周期不同:
    • 成员变量随着对象的创建而存在,随着对象的回收而释放
    • 静态变量随着类的加载而存在,随着类的消失而消失
    • 2:调用方法不同:
    • 成员变量只能被对象调用
    • 静态变量可以被对象调用,也可以被类名调用
    • 3:别名不同
    • 成员变量别名实际变量,全局变量
    • 静态变量也成为类变量
    • 4:数据存储位置不同:
    • 成员变量数剧存储在堆内存的对象中,所以也叫对象的特有数据
    • 静态变量数据存储在方法区的静态区中,所以也叫对象的共享数据
      *
      *static 应该在什么情况下使用,
    • 1 静态变量:
    • 当分析对象中具有的成员变量的值都相同时,这时这个成员就可以被静态修饰
    • 只要数组在对象中是不同的,就是对象的特有数据,必须存储在对象中.是非静态的,
    • 如果是相同的数据,对象不需要做修改,只需要使用即可,不需存储在对象中,要定义成静态的.
    • 2 静态方法:
    • 函数是否使用静态修饰,就参考一点,就是该函数是否有访问到对象的特有数据.
    • 简单点来说,从源码看该功能是否要访问非静态的的成员变量,如果需要,该功能就定义成非静态的..
    • 如果不需要,就可以定义成静态的.
    • 但是非静态需要被功能调用,而仅创建对象调用非静态的,没有访问特有数据的方法,该对象的创建没有意义
    • 只 调用,没打印,没有意义
      *
      *package:::包 导包import
      *
      *继承 extends
    • 继承的优点 :
    • 提高了代码的复用性,
    • 让类与类之间产生了关系,给多态提供了前提

      • 什么时候使用继承:
    • 当类与类之间存在所属关系的时候,使用继承.
    • 在子父类中成员的特点体现:
    • 1成员变量,
    • 当本类的成员和局部变量同名时用this 区分,当子父类中的成员变量同名用super区分.
    • this和super的用法很相似.
    • this:代表本类,当前类的对象引用
    • super:不能代表父类,代表一个父类空间
    • 当子父类中出现成员函数一模一样的情况,会运行子类的函数,这种现象称为覆盖操作,这是函数在子父类中的特性

    • *方法重写和方法重载的区别
    • 位置 方法名 参数表 返回值 访问修饰符
    • 方法重写 子类 相同 相同 相同或是其子类 不能比父类更严格
    • 方法重载 同类 相同 相同 无关 无关
      *
      *访问修饰权限
    • 本类 同包 子类 其他
    • private 私有 是
    • friendly默认 是 是
    • protected 保护 是 是 是
    • public 是 是 是 是
      *
    • 覆盖的注意事项:
    • 1;子类覆盖父类方法时,子类权限必须大于或等于父类权限
    • 2:静态只能覆盖静态,或被静态覆盖
    • 什么时候使用覆盖:
    • 当一个类进行子类的扩展时 ,子类要保留父类的功能声明,但是要定义子类中该功能的特有内容,就使用覆盖操作完成

      • *
    • absract 抽象
    • 修饰的方法称为抽象方法,
    • 存在抽象方法的类也必须是抽象类,用abstract修饰
    • 抽象类的特点:
    • 1:方法只有声明而没有实现时,该方法就是抽象方法,需要被abstract 修饰,抽象方法必须定义在抽象类中
    • 这个类也要定义成抽象类.\
    • 2: 抽象方法不能被实例化,(创建对象,)因为调用抽象方法没有意义
    • 3:抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化,否则这个类还是抽象类

      • 抽象类的细节
    • 1.抽象类中有构造方法吗?
    • 有,用于给子类对象进行初始化
    • 2,抽象类可以不定义抽象方法吗?
    • 可以的.但是很少见,目的就是不让类创建对象,AWT的适配器对象就是这种类,通常这个类中
    • 方法有方法体,但没有内容.
    • 3,抽象关键字不可以和那些关键字共存
    • private 抽象需要被覆盖,但private把方法隐藏了
    • Static 静态代表共享,抽象不能
    • final
    • 4,抽象类和一般类的异同点:
    • 相同点:抽象类和一般类都用于描述事物,都在内部定义成员
    • 不同点:
    • 1:一般类有足够的信息描述事物.抽象类描述的信息有可能不足
    • 2:一般类中不能定义抽象方法,只能定义非抽象方法.抽象类中可以定义非抽象方法
    • 3;一般类都可以实例化,抽象类不可以被实例化
    • 5:抽向类一定是父类吗,:
    • 是的.因为需要子类覆盖其方法后才可以对子类实例化
    • *
0 0
原创粉丝点击