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方法
上一篇:Python学习day9面向对象编程2-方法的可变个数的参数和方法的参数传递


下一篇:java学习day9--封装