栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java面向对象

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java面向对象

面向过程:怎么做

面向过程:谁来做

学习java面向对象3条主线:

1.java类及类的成员:属性,方法,构造器;代码块,内部类

2.面向对象的三大特征:封装性,继承性,多态性

3.其他关键字:this,super,static,final,abstract,interface,package

二,面向对象的两个要素

类:对一类事物的描述;对象:一个实例

设计类就是设计类的成员,即为属性和方法

属性=成员变量=field=域,字段;方法=成员方法=函数=method

类和对象的使用:

 

 

注意:调用也不一定是写在主函数中,也可能在方法中调用

如何理解类和对象:

类:抽象的,概念性的

对象:实实在在的

关系:对象是类的一个实例

万事万物皆对象:

(1)在java语言范畴中,我们都是将共那个呢,结构封装到具体的类当中,通过类的实例化,创建一个对象,来调用具体的功能结构

(2)涉及到java语言与前端的html,后端的数据库有交互时,都体现为类和对象 

1,如果创建了一个类的多个对象,则每个对象都拥有独立的一套属性

但是如果把person p3=p1,则是把p1变量的地址附给p3,让他们指向同一个堆空间,则p1和p3一了

2.属性的默认值

如果是属性,如果没有赋值,会有默认值,同之前一样

如果是类,没有赋值,会是地址值

3.对象的内存解析

虚拟机栈:存储局部变量;堆:存放对象实例;方法区:类信息,常量,静态变量

对象数组的内存解析

 

 

4.属性(成员变量) vs 局部变量

相同点:

(1)定义变量的格式都一样: 数据类型 变量名=变量值

(2)先声明,后使用

(3)都有其对应的作用域

不同点:

(1)在类中声明的位置不同

属性(成员变量):直接定义在类的一对{}里面

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

(2)关于权限修饰符的不同

属性:在声明权限时,指明权限,使用权限修饰符

           常见的权限修饰符:private,public,缺省(前面没有任何东西的),protected

局部变量:不能使用权限修饰符

(3)默认初始化值

属性:均有默认化初始值  整形--0;浮点型--0.0;字符型--0;引用类型--null;布尔型--false

局部变量:没有默认初始化值,因此要使用必须要赋值,不然会报错!!!!!!!

特别的,形参在调用的时候我们赋值即可

(4)在内存中加载的位置

属性:加载到堆空间中

局部空间:加载到栈空间

5.类中方法的声明和使用

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

(1)方法的声明:

格式:权限修饰符 返回值类型 方法名 (形参列表){方法体}

public void eat(){}

public void eat(int a){}

public Stringeat(){}

public String eat(String  a){}

说明,声明类型可以是空,可以是数据类型,如果是空,不需要返回,如果是具体类型,需要有返回值;可以有形参,可以没有形参

 a:关于权限修饰符:暂时先默认均使用public

b:返回值类型

b1:如果方法有返回值,则必须在方法声明时,指定返回值类型,同时,必须使用return关键字返回这个类型的变量或者常量

b2:如果方法没有返回值: 方法声明时要用void表示,且不需要使用return,若使用则写return;

b3:作用:(1)结束方法   (2)针对有返回值的方法,使用“return 数据”方法,返回所要的数据

b4:注意:return 后面不可以声明执行语句

b5:范围:在方法体中

c:如何判断该不该有返回值

题目要求+凭经验

d:方法名:就是一个标识符,要见名知意

e:形参列表:方法可以声明0个,1个,多个形参

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

f:我们定义方法时,该不该定义形参?

题目要求+凭经验,形参类比成原材料,方法为菜名,方法体为具体过程

(2)方法的使用:

a:在方法体中,可以调用当前类的属性或方法(通常可以调别人或自己,掉自己就是递归)

b:不能在方法里面定义新方法

练习题:

 

 注意:调用有参数的,最好是创建一个对象去调用,或者是static直接调用

 

package mianxinagduixiang;

public class _4 {
	public static void main(String[] args) {
		Student[] s = new Student[20];//题目要求创建20个对象,故用数组来表示相同类型的集合
		for (int i = 0; i < s.length; i++) {
			s[i]=new Student();//这里理解为创建的每一个对象,而在循环里面调用的话就写成了s【i】
			s[i].number = i + 1;//i从0开始,学号是1到20
			s[i].state = (int) (Math.random() * (6 - 1 + 1) + 1);
			s[i].score = (int) (Math.random() * (100 - 0 + 1) + 0);
			
		}
		for (int i = 0; i < s.length; i++) {
			if (s[i].state == 3)
				System.out.println(s[i].info());
			}//循环里面调用必须是要加上是s【i】.
			
		System.out.println("****************************************");
			//问题二:用冒泡排序按学生成绩排序,并遍历所有学生信息
			for (int i1 = 0; i1 < s.length-1; i1++) {
				for (int j = 0; j < s.length-1-i1; j++) {
					if(s[j].score>s[j+1].score) {
						Student temp=s[j];//交换的不是成绩
						s[j]=s[j+1];
						s[j+1]=temp;
					}
				}
			}
			for (int i = 0; i < s.length; i++) {
				System.out.println(s[i].info());
			}
			
		}
	}

	class Student {

		int state;
		int score;
		int number;
		public String info() {
			return "学号为" + "" +number + "的年级为" + 
					state + "" + "成绩为" + score;
		}
	}

6.类的内存解析

练习:

 解决方法:

way1:

package classroom;

public class C_1 {
	
public static void main(String[] args) {
	//把它从实例变量变成局部变量
	long a[]=new long[10];
	System.out.println(a[6]);
}
}

way2:

将a变成静态的,实例方法可以调用静态变量

way3:

创建一个对象,通过对象.属性来调用

涉及到的知识点:——静态的调用

(1)若实例变量在实例方法里面,则可以直接调用

(2)实例方法可以调用静态变量

(3)可以调用一个对象的属性

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782462.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号