Java对象

来源:互联网 发布:维斯布鲁克生涯数据 编辑:程序博客网 时间:2024/05/16 10:14

提到Java对象可有的说了,Java从设计之初,就根据对象思想进行设计,他是java根基。对象主要围绕三个方面:封装、继承、多态。封装简单地说就是对对象进行抽象,将对象的属性和方法包装到块,提到封装不得不说的是访问权限,继承是对对象的进一步抽象,比如人、男人、女人,人是男人和女人的共同点,为了不重复的工作,提高代码的重用性,因此将人单独抽象,男人和女人再去继承他,多态的提出是为了提高代码的扩展性,先做一个框架,再去实现框架,多好的思想,方便了你我他,又能使代码重用。总之,对象是一种思想,对象语言是用语言进行描述对象,是围绕抽象、重用性对对象进行语法包装。

类与对象:类是对事物的描述,对象是具体的事物

对象语法

  1. 局部变量和成员变量
    • 作用范围
      • 局部变量:方法内 (注意Java中没有静态局部变量)
      • 成员变量:类中,对整个类有效,成员变量分静态成员变量和非静态成员变量,静态成员变量是类加载后可用,非静态变量是对象可用
    • 存储空间
      • 局部变量:栈中
      • 成员变量:堆内存(静态的成员变量在方法区,非静态的成员变量在堆内存中)
    • 初始化值
      • 局部变量:在使用前必须手动给值
      • 成员变量:Jvm默认初始化值
  2. 构造函数
    • 用途:用于给对象中的属性进行初始化
    • 特点:不定义空参数的构造函数,系统会自动给一个空参数构造函数
    • 重载构造函数,是根据参数列表来区分那个构造函数
  3. this关键字
    • 代表当天对象的引用,使用时,谁调用方法,this代表谁
    • 什么时候使用this
      • 当局部变量和成员变量重名时,可以用this进行区分
      • 构造函数中使用this,this()必须放到第一行,表示调用空参的构造函数
      • 写功能时,可能用到this
  4. static 关键字
    • 静态的意思,可以修饰类的成员(成员变量、成员方法)
    • 特点
      • 随类的加载而加载
      • 优先于对象存在
      • 被多个类共享
      • 可以通过类直接访问
    • 注意事项
      • 静态方法只能访问静态成员
      • 今天方法中不能使用this,super关键字
  5. 代码块
    • 静态代码块:类加载时调用,只调用一次,主要用与不能实例化的类,进行初始化
    • 构造代码块:new一个对象时调用先于构造方法,主要用于当有多个构造方法时,减少代码量
  6. final修饰符
    • final可以用来修饰类:被final修饰的类不能被继承
    • final用来修饰成员变量:被修饰的成员变量为常数,不能更改
    • final可以用来修饰成员方法:被修饰的成员方法不能重写
  7. 抽象类
    • 抽象类的特点
      • 如果一个类有了抽象方法,这个类就是抽象类,抽象类里可以没有抽象方法
      • 抽象类不能被实例化,不能创建对象
      • 如果一个类继承了抽象类,要么重写所有的抽象方法,要么是抽象类
      • 抽象关键字abstract不可以与哪些关键字共存(private:私有化,外部无法直接访问;static:这个时候抽象方法可一直通过类名访问,这可不好;final:final修饰的方法不能被重写,冲突了)
  8. 接口(interface)
    • 接口是功能的扩展
    • 接口解决了java中只能单继承问题,接口可以多实现
    • 接口中的成员:成员变量:只能是常数,默认修饰符public static final;成员方法:默认修饰符是public abstract

封装

  • 访问权限
    下面用表格区分四种访问权限的异同:
同一个类 同一个包 不同包的子类 不同包的非子类 Private √ default √ √ Protected √ √ √ Public √ √ √ √

继承

  1. 好处:提高了代码的复用性
  2. 特点:Java只支持单继承
  3. 注意:
    • 子类不能直接访问父类中的私有的属性和行为

多态

  1. 事物的多种存在形式
    方法的重载(静态多态)
    方法的重写(动态多态)
  2. 多态成员的特点
    Parent c = new Child()
    • 成员变量:编译和运行都看Parent
    • 非静态方法:编译时看Parent,运行时看Child
    • 静态方法:编译和运行都看Parent

Parent p = new Child();p.speak();                       //这里出输出的是“I'm Child”public class Parent {    public void speak() {        System.out.println("I'm Parent");    }}public class Child extends parent {    public void speak() {        System.out.println("I'm Child");    }}
0 0
原创粉丝点击