Java学习笔记Day9

类和对象

面试题:OOP语言的三大特征:
继承、封装、多态
OOP:面向对象程序设计语言 Object-Oriented

类:

  • 属性、成员变量、实例成员变量//字段
  • 行为、方法、成员方法、实例成员方法
  • 实例化一个对象:Person person=new Person();

static

  • static 静态成员变量:方法区
    final修饰之后放在哪个内存区域不一定
public static int count=0;
public static final int SIZE=30;
public final int size2=32;
  • 静态成员变量的访问通过类名.属性进行访问;
    通过对象的引用去访问,但是不建议。
  • 静态成员方法的调用通过类名.方法进行调用 ;
    所有被static所修饰的不管是方法成员 ,调用和访问都只需要通过类名,就可以做到;
    所有被static所修饰的不管是方法成员,都不依赖于对象,属于类,并且只有一份,存储在方法区。

为什么main函数是static所修饰?
如果不是静态的,那么main函数的调用需要对象

成员变量:如果没有赋值,那么它的默认值就是自己所对应的0值。

  • 引用类型-》null 数组 类 String
  • 简单类型-》0 char ‘\u0000’ boolean=false
  • 局部变量:必须进行初始化
System.out.println(person.name.length());
//空指针异常,name默认值为Null,NUll.length()
  • 在静态方法内部不能访问非静态的数据成员,原因:静态的方法不依赖于对象,对象的产生,并不影响调用静态方法、而非静态的数据成员依赖于对象。对象被实例化之后,name产生。

封装:

初始化方式

提供一系列的get、set方法
alt+insert(f12):自动生成get、set方法(shift)
fn+esc解锁fn键

构造函数:

  • 方法名和类名一样
  • 如果在实现类的时候,没有写构造方法,那么编译器会自动生成一个不带有参数的构造方法。但是,如果你自己写了一个不带有参数的构造方法,那么编译器不会为你自动生成不带有参数的构造方法
  • 私有构造方法:单例设计模式
  • 构造方法也能发生重载

一个对象的产生分为两步:

  • 为对象分配内存
  • 调用合适的构造方法,构造方法不止一个

this代表什么?
当前对象的引用
this(1);//调用有参构造,必须放在第一行

@override 注解

Person person = new Person();
System.out.println(person);//默认调用Object的toString方法

代码块

本地代码块

实例代码块:初始化类的实例化数据成员(也可以初始化静态的)

{
    this.name="caocao";
    count=8888;
}  

静态代码块:初始化静态成员

static{
    count=9999;
}

同步代码块

  • 实例代码块优先于构造方法执行
  • 静态代码块优先于实例代码块
  • 同级 与顺序有关
  • 静态的只初始化一次

匿名对象:

  • 匿名只是表示没有名字的对象.
  • 没有引用的对象称为匿名对象.
  • 匿名对象只能在创建对象时使用
  • 如果一个对象只是用一次, 后面不需要用了, 可以考虑使用匿名对象
  • 第一次创建的匿名对象和第二次创建的不是一个对象
发布了67 篇原创文章 · 获赞 12 · 访问量 1530

猜你喜欢

转载自blog.csdn.net/qq_42174669/article/details/102760030