IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java基础入门第七天 -> 正文阅读

[Java知识库]Java基础入门第七天

面向对象(上)

对于面向对象啊,通俗理解自身认为就是跟数学里面东西一样,规定好一个数学公式你直接自己拿来用!这个面向对象就可以理解为自己定一个公式,然后调用它!面向对象是Java内容的核心部分,分为上、中、下来简单做一下总结!

1.面向对象学习得三条主线:

  1. Java类及类的成员:属性、方法、构造器;代码块、内部类
  2. 面向对象的大特征:封装性、继承性、多态性
  3. 其他关键字:this、super、static、final、abstract、interface、backage、import等

2.面向对象与面向过程(理解)

  1. 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做
  2. 面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做

3.完成一个项目(或功能)的思路:

  • 根据问题需要,选择问题所针对的现实世界中的实体
  • 从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类
  • 把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。即借助某种程序语言,把类构造成计算机能够识别和处理的数据结构
  • 将类实例化成计算机世界中的对象。对象是计算机世界中解决问题的最终工具

4.面向对象 中两个重要概念:

类:对一类事物的描述,是 抽象的、概念上的定义

对象:是实际存在的该类事物的每个个体,因而也称为实例

面向对象程序设计的重点是类的设计

设计类,就是设计类的成员

二者关系:

对象是由类 new出来的,派生出来的。

5.面向对象思想落地实现的规则:

  1. 创建类,设计类成员
  2. 创建类的对象
  3. 通过“对象.属性”或“对象.方法”调用对象的结构

补充:几个概念的使用说明

  • 属性 = 成员变量 = field = 域 、 字段
  • 方法 = 成员方法 = 函数 = method
  • 创建类的对象 = 类的实例化 = 实例化类
package sgg;
public class sgg{
	public static void main(String[] args) {
		//2.创建Person类的对象
		Person P1 = new Person();
		//Scanner scanner = new Scanner(Syatem.in);
		//调用对象的结构:属性、方法
		//3.调用属性:“对象.属性”
		P1.name = "Tom";
		P1.isMale = true;
		System.out.println(P1.name);
		//调用方法:“对象.方法”
		P1.eat();
		P1.sleep();
		P1.talk("Chinese");
		//**********************************
		Person P2 = new Person();
		System.out.println(P2.name);//null
		System.out.println(P1.isMale);
		//**********************************
		//将P1变量保存的对象地址值赋给P3,导致P1和 P3指向了堆空间中的同一个对象实体
		Person P3 = P1;
		System.out.println(P3.name);
		
		P3.age = 10;
		System.out.println(P1.age);
		
	}

}
//1.创建类,设计类成员
class Person{
	//属性
	String name;
	int  age;
	boolean isMale;
	//方法
	public void eat() {
		System.out.println("人可以吃饭");
	}
	public void sleep() {
		System.out.println("人可以睡觉");
	}
	public void talk(String language) {
		System.out.println("人可以说话,使用的是"+language);
	}
	
}

6.对象的创建与对象的内存解析

典型代码:

Person P1 = new Person();

Person P2 = new Person();

Person P3 = P1;//没有新创建一个对象,公用一个堆空间中的对象实体。可以去类比一下前面数组说的复制!

说明:如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性。(非static的)

意思就是:如果我们修改一个对象的属性a,则不影响另外一个对象属性a的值。

内存解析:

7.JVM内存结构:

编译完源程序以后,生成一个或多个字节码文件

我们使用JVM中的类的加载器和解释器对生成的字节码文件进行解释运行。意味着,需要将字节码文件对应的类加载到内存中,涉及到内存解析。

《JVM规范》后面这本书可以了解下

虚拟机栈,即为平时提到的栈结构。我们将局部变量存储在栈结构中

堆:我们将new出来的结构(比如:数组、对象)加载在对空间中。补充:对象的属性(非static)加载在堆空间中

方法区:类的加载信息、常量池、静态域

类的设计中,两个重要结构之一:属性

对比:属性 VS 局部变量

1、相同点:

  • 定义变量的格式:数据类型 变量名 = 变量值
  • 先声明,后使用
  • 变量都其对应的作用域

2、不同点:

2.1.在类中声明的位置的不同

? ? ? ? 属性:直接定义在类的一对{}内

? ? ? ? 局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量

2.2关于权限修饰符的不同

? ? ? ? 属性:可以在声明属性时,指明其权限,使用权限修饰符。

? ? ? ? ? ? ? ? 常用的 权限修饰符:private、public、缺(xing)省、protected? ?---->封装性

? ? ? ? ? ? ? ? 目前声明属性用缺省就行了,后面会用到其他的。

? ? ? ? 局部变量:不可以使用权限修饰符。

2.3.默认初始化值的情况:

? ? ? ? 属性:类的属性根据其类型都默认初始化值

? ? ? ? ????????整型 byte、short、int、long:0

? ? ? ? ? ? ? ? 浮点型float double:0.0

? ? ? ? ? ? ? ? 字符型char:0或(‘\u0000’)

? ? ? ? ? ? ? ? 布尔型Boolean:false

引用数据类型(类、数组、接口:null)

局部变量:没有默认初始化值

意味着,我们在调用局部变量之前,一定要显示赋值。特别:形参在调用时,我们赋值即可。

2.4.内存中加载的位置:

属性:加载到堆 空间中(非static)

局部变量:加载到栈空间

变量分类:

方式一:按照数据类型:

方式二:按照在类中声明的位置:

package sgg;
public class sgg{
	public static void main(String[] args) {
		User u1 = new User();
		System.out.println(u1.name);
		System.out.println(u1.age);
		System.out.println(u1.isMale);
		
		u1.talk("日语");
		u1.eat();
		
	}

}
//1.创建类,设计类成员
class User{
	//属性(或成员变量)
	//private 不要这个叫缺省
	String name;
	//public 不要这个叫缺省
	int  age;
	boolean isMale;
	public void talk(String language) {//language:形参,也是局部变量
		System.out.println("我们使用"+language+"进行交流");
	}
	public void eat() {
		String food = "馒头";//局部变量
		System.out.println("北方人喜欢吃"+food);
	}
	
}

类的设计中两个重要结构之二:方法

方法:描述类应该具有的功能

比如:Math类:sqrt() 、random()、等

Scanner类:nextXxx()等

Arrays类:sort()、binarySearch()、toString()、equals等

1.举例:

public void eat() {}

public void sleep(int hour){}

public String getName(){}

public String getNation(String nation){}

2.方法的声明:权限修饰符 返回值类型 方法名(形参列表){

? ? ? ? ? ? ? ? ? ? ? ? 方法体

}

注意:static、final、abstract 来修饰的方法,后面再说。

3.说明:

3.1关于权限修饰符:默认方法的权限修饰符先都使用public

? ? ? ? Java规定的 4种权限修饰符:private、public、缺省、protected ---->封装性后面细说

3.2返回值类型: 返回值 VS 没返回值

? ? ? ? 3.2.1如果方法返回值,则必须再方法声明时,指定返回值类型,同时,方法中,许哟啊使return关键字未返回指定类型的变量或常量:“return 数据”。

? ? ? ? 如果方法没返回值,则方法声明时,使用void来表示,通常,没返回值的方法中就使用return。但是如果使用的化,只能“return;”表示结束此方法的意思。

????????3.2.2我们定义方法该不该返回值这个问题:

????????第一根据题目要求,第二就是凭自己经验判断,具体问题具体分析

3.3方法名:属于标识符,遵循标识符的规则和规范,“见名知意”

3.4形参列表:方法可以声明0个,1个,或者多个形参。

? ? ? ? 3.4.1格式:数据类型1 形参1,数据类型2 形参2,...

? ? ? ? 3.4.2我们定义方法时,该不该定义形参这个问题:?

????????第一根据题目要求,第二就是凭自己经验判断,具体问题具体分析

3.5方法体:方法功能体现

4.方法的使用中,可以调用当前类的属性或方法

特殊的:方法A中又调用了方法A:递归方法

方法中,不可以定义方法

return关键字:

1.使用范围:使用在方法体中

2.作用:

  • 结束方法
  • 针对于返回值类型的方法,使用“return 数据”方法返回所要的数据。

3.注意点:return关键字后面不可以声明执行语句

package sgg;
public class sgg{
	public static void main(String[] args) {
		Customer cust1 = new Customer();
		cust1.eat();
		cust1.sleep(2);
	}
}
class Customer{
	//属性
	String name;
	int  age;
	boolean isMale;
	//方法
	public void eat() {
		System.out.println("客户吃法");
	}
	public void sleep(int hour) {
		System.out.println("休息了"+hour+"个小时");
	}
	public String getName() {
		return name;
	}
	public String getNation(String nation) {
		String info = "我的国籍是:"+nation;
		return info;
	}
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 14:24:43  更:2021-07-10 14:26:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:40:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码