【JavaSE】类和对象重点知识荟萃

简介: 【JavaSE】类和对象重点知识荟萃

思维导图:

 

1.类和类的实例化:

  1. 面向对象的思想,Java是一门面向对象的语言,面向对象是解决问题的一种思想,面向对象不关注过程
  2. 类的定义需要用到关键字class,类名采用大驼峰的形式,类有成员变量(字段、属性)和成员方法(行为)组成,建议1个Java文件写1个类public修饰的类必须要和文件名相同。
  3. 对成员变量赋值的5种方法:在定义成员变量的同时进行初始化叫做就地初始化成员变量也可以不初始化,那就默认为0;在类外通过对象的引用直接赋值也可以;可以使用构造方法进行初始化;在类外也可以提供get和set方法来完成初始化。
  4. 成员变量不赋值可以使用,系统默认基本数据类型为0;引用类型为null(boolean类型默认为false,char类型默认为空)。局部变量不赋值的话使用会报错!
  5. 类的实例化有俩步非常重要的操作。第1步是new一个类的对象出来,为这个对象分配内存;第2步是调用合适的构造方法,构造方法有很多种(无参、多个参数)。
  6. 类的实例化需要用到关键字new,是在堆上创建的。堆上会存储成员变量的有关信息,不会存成员方法;只有当对象引用了方法,才会在栈帧上开辟空间存放你所调用的方法。实例化多个对象,这些对象之间相互独立,谁都不会影响其他对象,每个对象之间不会冲突,且在堆上开辟的内存地址也不可能一样!
  7. this引用的是调用成员方法的对象,哪个对象调用了这个成员方法哪个对象就是这个this引用。this引用只能在成员方法中使用,成员变量不能使用
  8. this的功能:如果this.属性,代表着访问当前对象的属性。如果this ( );调用当前对象的构造方法,必须注意:this ();的使用必须放到构造方法中并且在构造方法的第一行,不能形成环!如果this.方法名,表示调用当前对象中的成员方法。

2.构造方法:

  1. public + 类名(),构造方法的名字和类名相同,没有返回值类型,置为void也不行。
  2. 构造方法的作用是为对象的属性赋值或对对象中的成员初始化,不负责给对象开辟空间
  3. 实例化对象调用的其实就是构造方法。如果没有显式定义,编译器会默认生成一个不带参数的构造方法。一旦用户定义了构造方法,编译器便不会再生成。构造方法是可以重载的,根据自己的需求可以构造合适的构造方法。
  4. 构造方法中,可以使用this来调用其他构造方法,但是this ();必须是第一条语句,且不能形成环,绕来绕去编译器也懵住了!
  5. 在对象的生命周期内只调用一次,这只是对于单个独立的对象而言。如果有其他的对象也可以正常调用各自的构造方法,只不过也只能调用一次。

3.封装:

  1. 面向对象程序有三大特性,封装、继承和多态
  2. 封装就是对类的实现细节进行了隐藏,同时提供了公开的方法对封装的属性或方法进行交互,提高了安全性,用private来实现,被修饰后只能在当前的类中进行访问,类外是不可以的!简单来说就是“套壳屏蔽细节”
  3. 访问修饰限定符:private、default、protected、public。public是谁都可以访问;private是只有在同一个类中才能访问到;default是在同一个包中才可以访问到;
  4. 包是由不同的类组合成的,类似于文件夹,包名需要小写

4.static关键字

  1. 被static修饰的成员变量称为静态成员变量,其不属于某个具体的对象,是所有对象共享的,不存储在某个对象的空间中。所以访问的时候最好的方法是用类名来访问静态成员变量
  2. 静态成员变量存储在方法区中,普通成员变量存储在堆上。静态成员变量随着类的创建而创建,类的销毁而销毁。类变量不能定义在普通方法中。
  3. 在静态方法里面不可以直接访问非静态的成员变量和成员方法,但是可以传参提供对象的引用来访问非静态成员,或是在静态方法内部实例化一个对象。非静态的可以访问静态的。
  4. 普通成员方法的()中默认有this,而静态成员方法和构造方法没有。
  5. 静态成员变量初始化有俩种:就地初始化和静态代码块初始化。就地初始化就是在创建的同时赋值。

5.代码块:

  1. 使用{ }定义的一段代码就称为代码块。代码块分为普通代码块(本地代码块)、构造代码块(实例代码块)、静态代码块和同步代码块。
  2. 实例代码块用于初始化实例成员变量,不加修饰符,定义在类的内部方法的外部
  3. 静态代码块用于初始化静态成员变量,static定义的代码块。当程序加载到类就会接着加载静态代码块,静态代码块最先被加载进行初始化同时开辟内存空间并且不管new多少个对象出来静态代码块只会执行1次
  4. 加载顺序:静态代码块>实例代码块>构造方法。如果有多个静态代码块或实例代码块,需要看定义的顺序,最后被定义的就是结果。
  5. 实例代码块只有在创建对象时才会执行,而静态代码块在类被创建时就执行。

6.内部类:

  1. 把一个类定义在某个类的内部,则称这个类是内部类,某个类就是外部类。内部类和外部类公用一个java源文件,编译后内部类会有自己的字节码文件
  2. 内部类分为:实例内部类、静态内部类、本地内部类、匿名内部类。
  3. 实例内部类:未被static修饰的成员内部类。实例内部类中如果定义静态成员变量必须加final否则会报错;实例内部类中不能定义一个静态的方法;实例内部类中可以任意访问外部类中的成员和方法;实例内部类当中访问和外部类同名变量的时候优先访问自己的;实例内部类的创建必须依赖于外部类;外部类不能直接访问实例内部类中的成员,必须先创建内部类的对象才可以做到。实例内部类中包含外部类的this引用
  4. 静态内部类:被static修饰的成员内部类。不能在静态内部类中直接访问外部类的非静态成员创建静态内部类时不需要先创建外部类对象,创建实例内部类则不然!

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

相关文章
【JavaSE专栏62】继承,JAVA面向对象编程中的一项重要特性
【JavaSE专栏62】继承,JAVA面向对象编程中的一项重要特性
119 0
|
5月前
|
设计模式 安全 Java
Java编程思想重点开发必看
Java编程思想重点开发必看
26 0
|
6月前
|
Java 编译器 C++
【C++】 | 类和对象完结篇
【C++】 | 类和对象完结篇
|
算法 安全 Java
重温经典《Thinking in java》第四版之第二章 一切都是对象(十三)
重温经典《Thinking in java》第四版之第二章 一切都是对象(十三)
46 0
【JavaSE专栏23】Java反射有多强? 他拥有这五大神奇功能!
【JavaSE专栏23】Java反射有多强? 他拥有这五大神奇功能!
|
存储 编译器 C++
【C++】类和对象(完结篇)
【C++】类和对象(完结篇)
67 0
|
编译器 C++
爱上c++的第六天(核心课程):继承和多态
学习c++的人一定知道的就是c++是面向对象设计的,而面对对象的三大特性就是封装,继承和多态,我们在刚开始学习的时候就已经学过封装了,今天我们主要来学习一下多态和继承。
54 0
|
Java 编译器
JavaSE——类和对象 重点梳理
JavaSE——类和对象 重点梳理
|
编译器 数据库 C++
领悟面向对象就离开发应用不远了(类提高)有你对面向对象的所有疑问,爆肝1w字
领悟面向对象就离开发应用不远了(类提高)有你对面向对象的所有疑问,爆肝1w字
151 0
|
Java DataX
教你从实战中领悟继承(中) | 带你学《Java面向对象编程》之四十三
本节通过介绍字符串统计算法在两种思路下的不同实现方式,为读者展示了简单实现与结构化设计下的程序的不同。