JavaSE总结笔记-4

简单概述

此文章是自己进行java学习的一个总结内容, 可能会有多篇.

类与对象

类本质上是一个模板, 是一种抽象都描述, 是一系列事务的特征行为的抽取, 对于其特征我们称之为属性, 对于其行为我们称之为方法.

public class 类名{
	属性;
	方法;
}

对象则是根据类产生出来的一个具体实例, 其可以运行类中的各种行为(方法).

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

类中的6大组成部分

成员变量

定义在类当中, 其在方法外不被static修饰的变量, 我们称之为成员变量.

成员变量属于对象, 可以不用给初始值, 系统会根据其基本类型赋予初值:

整数变量: 0, 小数变量: 0.0, 字符变量: \u000, 布尔变量: flase, 引用类型: null

成员变量的作用域整个类.

成员方法

定义在类当中且不被static修饰的方法, 我们称之为成员方法.

局部变量

局部变量则是定义在方法内部或者参数列表中的变量, 局部变量的作用域方法体内部, 且必须要有初始值才能使用.

静态变量

被static修饰变量我们称之为静态变量, 静态变量是所有对象共同拥有的属性, 其本质上是类所独有的.

静态方法

被static修饰方法我们称之为静态方法, 静态方法是所有对象共同拥有的方法, 其本质上是类所独有的.

构造方法

构造方法是创建类所必须的, 默认情况下创建类时会默认拥有一个无参的构造方法, 其主要目的时用于给对象进行初始化, 使得对象能够正常创建.

构造方法的特点
  1. 构造方法其方法名和类名一模一样
  2. 构造方法没有返回值类型
  3. 在类中如果实现了一个构造方法, 那么默认的无参构造方法会消失.
构造方法的格式
// 无参构造
修饰符 类名(){
	
}
// 有参构造
修饰符 类名(参数列表){
	.....
}

其他

成员变量与局部变量的比较

比较部分局部变量成员变量
定义位置方法内部类中方法外
作用域方法内部整个类中
默认值没有默认值, 必须初始化有默认值, 可以直接使用
初始化位置栈内存堆内存
生命周期随着方法的调用初始化, 随着方法的运行完毕而消失随着对象的创建而初始化, 随着对象的消失而消失

抽象类

定义

abstract关键字修饰的类称为抽象类

格式

abstract class 类名{

}

什么时候使用抽象类

  1. 在不确定子类中的方法逻辑时, 此时可以通过使用抽象类来定义方法, 这个时候可以通过添加abstract关键字来定义抽象方法, 当子类继承该类的时候, 此时会强制要求重写抽象方法
  2. 如果我们需要强制对子类的一个方法进行重写时, 此时也可以定义抽象方法, 强制要求子类对其进行重写.

特点

  1. 抽象类本身还是一个类, 拥有类的所有特性
  2. 抽象类虽然也具有构造方法, 但是其不能进行对象创建
  3. 抽象类的构造方法, 主要是保证抽象类的构造, 使得子类对象能够初始化成功
  4. 有抽象方法的类一定是抽象类, 抽象类本身不一定有抽象方法.

定义

包其实就是对应在磁盘当中的文件夹.

如何进行包名定义

域名倒写原则, 比如baidu.com创建包名时就需要使用com.baidu的方式.

final关键字

定义

final关键字可以用来定义常量, 被其修饰后无法在进行更改.

final关键字的使用场景

使用场景结果
修饰类该类不可以被继承
修饰方法该方法不可以被重写, 只能修饰普通方法, 抽象方法无法修饰
修饰变量变量变成常量, 修饰基本类型变量时变量值无法更改, 修饰引用类型变量时, 地址值无法改变, 内存中具体的值可以改变

实参与形参

实参: 调用方法时, 真实传入的变量或者常量

形参: 方法的参数列表, 就叫形式参数

当实际参数是基本类型时, 形式参数的改变不会影响实际参数.

当实际参数是引用类型是, 形式参数的改变会影响实际参数.

static关键字

定义

static关键字修饰的内容在jvm中都会被认为属于类而不是属于对象, 所以被static修饰的变量或者方法, 都可以被类名直接调用.

静态和成员的区别

静态成员
属于范围静态属于类成员属于方法
初始化时间静态是随着.class文件进入方法区就开始加载成员是随着new一个新对象而创建
调用情况静态不能调用对象对象可以调用静态
是否共享静态被所有对象共享对象不能共享其成员

接口

定义

接口其内部的变量和方法默认都是由public static final进行修饰, 类可以进行多个接口的实现, 解决了类只能单个继承的问题.

格式

interface 接口名{
	抽象方法;
}
// 接口的调用
class 类名 implements 接口名{
    
}

注意事项

  1. 接口内部没有构造方法
  2. 类可以一次性实现多个接口
  3. 类可以在继承一个类的同时是实现多个接口
  4. 接口和接口之间是继承关系, 而且是多继承
  5. 类的实现和继承同时存在的情况下, 一定是继承在前, 实现灾后
  6. 接口中所有的变量默认都是由public static final进行修饰的

接口与抽象类的区别

接口抽象类
构造方法接口没有构造方法抽象类有构造方法, 但是不能创建对象
变量接口中所有的变量都是常量抽象类中既可以有变量也可以有常量
方法接口中所有的方法都是抽象方法抽象类中可以有抽象方法也可以没有
实现与继承接口可以多实现抽象类只能单继承

面向对象的三大特征

封装

封装主要是将类中的属性进行私有化, 使其不能被其他类直接进行调用, 而是通过提供的方法进行调用, 以此来阻止跨类访问属性可能会出现的问题.

模板类

  1. 对成员变量进行私有化(添加private关键字)
  2. 提供无参和有参构造
  3. 提供get和set方法
  4. 提供toString方法

匿名对象

匿名对象是直接通过new关键字创建出来的对象, 其本身调用完, 可以直接被回收.

好处
  1. 使用简单放方便
  2. 没有引用指向匿名对象的内存区, 可以做到及时回收.

继承

继承是将多个具有相同属性或功能的类的抽取, 将这些抽取到一个公共类中, 其他类如果想要使用这些属性和行为, 就需要和公共类产生关系, 而这个关系称之为继承关系.

格式

class 子类名 extends 父类名{
	
}

注意事项

  1. Java中只允许单继承, 不允许多继承, 但是可以多层继承
  2. Java中所有的类默认都继承自一个类, 这个类是java中的根类(Object)
  3. Java中被继承的类叫做父类(超类), 继承的类叫做子类(派生类)
  4. 不要为了继承而继承, 要在体系下去继承

好处与坏处

好处: 节省了代码量, 提高了代码的复用性

坏处: 增强了类与类之间的耦合性

继承体系

重名不重名
非私有成员变量使用super(父类)与this(子类)关键字直接调用
非私有成员方法使用super(父类)与this(子类)关键字直接调用

构造方法:

  1. 构造方法不能被继承, 因为构造方法需要和类名一致
  2. 继承体系下, 子类的每次构造都会调用一次父类的构造方法.

重写:

如果子类具有一个和父类方法声明一模一样, 方法体不一样的方法, 此时称为方法的重写.

this与super

在前面我们知道, this关键字是用来指代当前对象的, 而这里的super对象则是用来指代其父类对象的, 它们的使用方式有如下几种:

  1. 调用变量
this.变量名 // 当前类的对象的变量
super.变量名 // 父类中的对象
  1. 调用方法
this.方法名 // 调用当前类中的某个方法
super.方法名 // 调用父类中的某个方法
  1. 调用构造方法
this() // 调用当前类的无参构造
this(参数) // 调用当前类的有参构造
super() // 调用父类的无参构造
super(参数) // 调用父类的有参构造 

多态

定义

实现多态的三个前提条件:

  1. 必须得有继承关系或者实现关系
  2. 必须要有方法的重写
  3. 父类的引用指向子类的对象

多态在调用重写方法时, 默认走的是子类重写后的方法, 但是父类中必须得有该方法, 才能通过编译

使用多态调用重写方法时: 编译看左边, 运行看右边.

关于我

我的Github: PorterZhang2021
我的博客地址:PorterZhang

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值