Java相关内容整理—-对象、属性、类

  • Post author:
  • Post category:java


首先对Java的模式进行解释、

注:属性不属于局部变量,属性属于堆空间(属性从根本上是属于类和对象的,也算是需要new出来的结构)

运用例子来说明属性、对象的数据存储

public class Person
{
	String name;
	bollean isMale;
	int age;
};
public class arraytext
{
	public static void main(string[] args)
	{
		Person p1 = new Person();
		p1.name = 'Tom';
		p1.isMale = true;
		Person p3 = p1;
		p3.age = 10;
	}
};

此时执行的p3=p1不是值传递,在推空间里也不会给p3创建一个与p1相同的空间,只会将p1的地址赋给p3,此时的p1和p3指向的是堆空间的同一块空间


属性和局部变量的概念

属性:在类的{}之中的都为属性

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

相同点:

1、定义二者的格式和数据类型

2、先声明后使用

3、有其对应的作用域和生命周期

不同点:

1、类的属性都有其默认的初始值,局部变量是没有默认初始化值的


面向对象和类

Java类及类的成员:属性、方法、构造器、代码块、内部类

面向对象三大特征:封装性,继承性,多态性、(抽象性)

此处需要说的是,面向对象更多是一种思想

面向过程:强调功能行为,以函数为最小单位,更多的去考虑怎么做

面向对象:强调具备功能的对象,以类/对象为最小单位,考虑谁来做

类:对一类事物的描述,是抽象的概念存在

对象:具体存在的事物(对象的功能取决于类的设计)、(方法:成员方法)、(属性:成员变量)

以下以代码为例子,创建一个类

class Person
{
	//属性
	String name;
	int age = 1;
	boolean isMale;
	//方法
	public void eat()
	{
		System.out.println("人可以吃饭");
	}
	public void sleep()
	{
		System.out.println("人可以睡觉");
	}
	public void talk(String language)
	{
		System.out.println("人可以说话,使用的是:"+language);
	}
};
//从中可以看书方法的定义方式
//权限修饰符 返回值类型 函数名称(【形参列表】)


创建类的实例—-对象(类的实例化)

public class Persontext
{
	public static void main(string[] args)
	{
		Person p1 = new Person();
		p1.name = "Tom";
		p1.sleep();
		p1.talk(Chinese);
	}
};
//对对象调用函数和属性的方法就是“对象名.属性”,“对象名.方法”

//创建一个类的多个对象,则每个对象都独立的拥有一套类的属性(非静态)

方法的重载(overload):在一个同类中,允许存在一个以上的同名方法,只要参数个数或者类型不同即可

当方法同名且参数列表不同的时候,就可以算是重载了。


可变个数的形参

格式:数据类型…变量名

1、可变形参的方法与本类中方法名相同,形参不同的方法之间称为重载

2、可变形参的方法与本类中方法名相同,且形参相同的数组之间不重载,且二者不共存

3、可变形参在方法的形参列表中必须声明在末尾

4、最多只能声明一个可变形参


方法参数的值传递机制

方法的参数遵循值传递机制

引用数据类型一般进行址传递,址传递才能改值,址传递算是某种程度上的指针

比如参数传递就是值传递,而对对象进行的=操作,则是址传递,当引用数据类型做形参的时候,一般也是址传递,只有基本数据类型作为形参传递的时候会进行值传递



版权声明:本文为weixin_63291917原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。