初识JAVA--面向对象-基础概念

初识JAVA--面向对象-上

  • 类、对象、方法
  • 修饰词
    • static 静态
      • 特点
  • 方法
    • 声明方法
  • 方法的重载
    • 一同三不同
  • 递归
    • 递归的物理结构
    • 递归的抽象结构
    • 递归设计
    • 声明方式
      • 类的声明
      • 成员变量
      • 成员方法
      • 构造器
    • this关键字
    • 块的概念
      • 构造块
      • 静态块
  • 对象
    • 声明方式
      • 匿名对象
      • new的作用
  • 包和导包
    • package
    • import

讲在文前,大多数的学习依靠自学,手把手的教和喂可以解决一时之需,却不一定能将其转化为自己所有,所以本文大部分内容以大纲和知识点为主,辅以部分代码和图片。主要在于记录学习的过程和总结,也便于以后复习时引起思考。

类、对象、方法

  • 类是对象的抽象,是模板(面向对象)
  • 对象是类的具体实现(面向对象)
  • 方法是类中定义的功能的具体实现(面向过程),在对象中被实际调用

修饰词

static 静态

  • 可以修饰类中的成员方法和成员变量,不能修饰局部变量(局部变量在方法中,指向对象所对应的变量,和静态矛盾)
  • 在类加载之后,静态对象、静态变量被初始化一次
  • 在数据类型/返回值类型之前放置

特点

  • 不属于对象,所有对象共用一个变量
  • 在静态内容中可以引用静态变量和方法
  • 在成员方法中可以通过声明临时对象的方式引用
  • 不可以和this共用

方法

声明方法

修饰符 返回值类型 方法名(形参列表){
	方法体;
	return;
}

修饰符类型:

  • public

返回值类型
方法名

  • 遵从标识符的命名规范
    形参列表
  • 声明
    • 形参类型 形参名
  • 特殊用法
    • 可变参数
      • 声明:形参类型 … 形参名
      • 多个类型相同且操作相同的参数传入方法可用可变参数
      • 传入后生成一个形参名的数组,数组长度视传入参数个数而定

方法的重载

一同三不同

  • 方法名相同
  • 形参个数不同
  • 形参种类不同
  • 不同的形参种类的顺序不同
  • 无关影响
    • 修饰符
    • 返回值类型
    • 形参名

递归

  • 方法的高级 (沙雕)用法

递归的物理结构

  • 头:停止递归的判断条件
  • 体:循环向自己递归的内容

递归的抽象结构

  • 前进:循环向自己递归,逐步增深
  • 转折:遇到递归头,结束递归
  • 后退:从最深处依次结束和返回
  • 整个过程可以理解为压栈和出栈

递归设计

  • 一般后退段与前进段相同,即一一对应
  • 递归头即为转折点,需要声明在判断的第一位置
  • 可以先根据需要的现象,找到转折点,转折点之后操作的内容是前进段的逆过程,和后退段保持一致
  • 如果是有数据运算等操作,那么当前步长和下一次递归做运算(阶乘)
  • 如果没有,那么当前递归体的实际操作排在下一次递归之后,这样就形成了前进段
轻松一刻
问:天安门的国徽上的天安门为什么没有国徽?
答:会形成递归,导致内存溢出,系统奔溃,被人类发现自己生活在母体中

  • 一个java文件中可以存在多个类,但是只能有一个public修饰的类,这个类名与.java文件同名
  • 存在多个类的文件 ,在编译后会根据类生成多个.class文件
  • 被调用的类会随着调用类同步被编译(编译器自动)

声明方式

修饰符 class 类名{
//成员变量的命名
	数据类型	成员变量名;
//构造器
	//无参构造器,默认的空构造器
	类名(){
	}
	//有参构造器,根据实际情况创建
	类名(形参列表){
		方法体;
	}
//成员方法的声明
	修饰符 返回值类型 成员方法名(形参列表){
		方法体;
		return 返回值类型对应的返回值;
	}
}

类的声明

成员变量

  • 用来定义类中的变量和属性

成员方法

  • 不能被static修饰(static为静态,而方法多为动态由声明的对象使用)
  • 类中的方法通过对象使用,主类中的方法直接调用,使用过程中需要注意

构造器

  • 用来初始化对象,相当于是特殊的方法
  • 构造器的重载和方法重载类似,一同三不同原则
  • 默认为无参构造器,当构建有参构造器后,默认无参自动消失,需要手动补充无参构造器
  • 构造器没有返回值,return的唯一作用是可以提前终止构造器的代码运行
  • 构造器只能被new关键字调用,用来声明一个新对象
  • 构造器不能和修饰符【abstract,final,static】一起使用

this关键字

  • 指向自己本身
  • 在构造器中
    • 使用this()可以指向其他构造器,只能放在构造器的首行才能生效
    • 注意不能相互调用形成死循环
    • 区分成员变量和局部变量
  • 在方法中
    • 区分成员变量和局部变量
    • 不用用在静态方法中,因为static方法是针对类有效的静态方法,而this指向的是当前对象,二者矛盾

块的概念

  • 被{ }框柱的是一个块

构造块

  • 类中直接被{}的代码
  • 在调用构造器时,在构造器中的代码之前执行
  • 特殊情况:当存在构造块、构造器、且构造器中引用了其他构造器时,构造块的内容在被调用的构造器中执行,然后执行被调用的构造器,最后执行初始构造器

静态块

  • 类中被static修饰的直接{}的代码
  • 在类被加载时执行

对象

声明方式

类名 对象名 = new 该类的构造器;

匿名对象

  • 对象声明的特殊方法,只能在声明时使用一次,因为没有指向任何对象,故无法再次被调用
new 该类的构造器().该类的方法;

new的作用

  • 堆为对象开辟空间,成员变量会跟随对象进入到堆内存中
  • 调用类型的构造器,为对象初始化信息
  • 将地址返回给引用对象

包和导包

package

  • 用来管理自己写的代码和资源
  • 声明方式
    • 导入自己写的资源文件
    • 写在代码第一行
package xxx.xxx;

import

  • 导入java提供的包和类
  • 声明方式
    • 写在package的下面,公共类的上面
import java.util.*//使用通配符,导入该包的全部类
  • 静态导入
    • 导入类中的静态内容,在后续使用中可以直接使用,不需要写类名
    • 声明方式
import static java.util.Math.PI

...//声明主类
syso(PI);//可以直接使用PI这个Math中的静态常量
  • 全名使用
    • 不导包,直接使用java提供的类
	int num = java.util.Scanner(System.in);

你可能感兴趣的:(初识JAVA)