java面向对象

java面向对象

  • 如何创建对象:

    类名 对象名 = new 类名();

  • 使用成员方法:

    对象名.方法名(参数)

    对象名.属性(可以赋值)

  • 成员变量和局部变量的区别
    • 在类中的位置不同

    成员变量:在类中方法外

    局部变量:在方法定义中或者方法声明上

    • 在内存中的位置不同

    成员变量:在堆内存

    局部变量:在栈内存

    • 生命周期不同

    成员变量:随着对象创建而存在,随着对象的消失而消失

    局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

    • 初始化值不同

    成员变量:有默认初始化值

    局部变量:没有默认初始化值,必须定义,赋值,然后才能使用

    • 注意事项

    局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的就是就近原则

  • 匿名对象

    没有名字的对象

    举例:正常创建对象时:Student s = new Student();

     创建匿名对象时:new Student();
    • 应用场景:

      1. 调用方法,只调用一次方法的时候 new Student().show();

      好处:匿名对象调用完毕就是垃圾,可以被垃圾回收器回收

      1. 匿名对象可以作为实际参数传递
  • 构造方法
    • 作用:给对象的数据进行初始化

    • 格式:(public Students (参数。。。){ })

      1. 方法名与类名相同
      2. 没有返回值类型,连void都没有
      3. 没有具体的返回值
    • 注意事项:

      1. 如果没有给出构造方法,系统会自动提供一个无参的构造方法
      2. 如果我们提供了构造方法(无论是有参还是无参的),系统就都不提供构造方法了(无参也不提供了)
      3. 建议自己给出无参构造方法

    给成员变量赋值由两种方法:

    1. 定义函数setXxx()
    2. 使用构造方法

    类的组成:成员变量、构造方法、成员方法

  • 初始化过程
    一个类的初始化过程
    • 成员变量的初始化

      默认初始化

      显示初始化

      构造方法初始化

    子类父类的初始化过程(分层初始化)

    先进行父类初始化,然后进行子类初始化

  • 创建对象时内存分配

这里写图片描述

  • 变量什么时候定义为成员变量:

    如果这个变量是用来描述这个类的信息的,那么,该变量就应该定义为成员变量

  • 变量到底定义在哪里好:

    变量的范围越小越好,因为能及时的被回收

  • static关键字

    这里写图片描述

  • 静态变量和成员变量的区别

这里写图片描述

  • 代码块

    在java中,用{}括起来的的代码被称为代码块

    根据其位置和声明的不同,可以分为

    • 局部代码块:局部位置,用于限定变量的生命周期

    • 构造代码块:在类中的成员位置,用{}括起来的代码。每次调用构造方法前,都会先执行构造代码块

      作用:可以把多个构造方法中的共同代码放到一起,对对象进行初始化

    • 静态代码块:在类中的成员位置,用{}括起来,用static修饰

      作用:一般是对类进行初始化

    • 静态代码块,构造代码块,构造方法的执行顺序?

      静态代码块–构造代码块–构造方法

    • 静态代码块:只执行一次

    • 构造代码块:每次调用构造方法都执行

  • 继承时,静态代码块,构造代码块,构造方法的执行顺序
    public class ExtendsTest {
      public static void main(String[] args) {
          Zi z=new Zi();
      }
    }
    class Zi extends Fu{
      static{
          System.out.println("静态代码块Zi");
      }
      {
          System.out.println("构造代码块Zi");
      }
      public Zi(){
          System.out.println("构造方法Zi");
      }
    }
    class Fu {
      static{
          System.out.println("静态代码块Fu");
      }
      {
          System.out.println("构造代码块Fu");
      }
      public Fu(){
          System.out.println("构造方法Fu");
      }
    }

    运行结果

    静态代码块Fu
    静态代码块Zi
    构造代码块Fu
    构造方法Fu
    构造代码块Zi
    构造方法Zi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值