Java学习个人备忘录之面向对象概念

对象,其实就是该类事物实实在在存在的个体。

类与对象之间的关系?
类:一类事物的描述。
对象:该类事物的实例。在java中通过new来创建的。
举例来说,类就是汽车说明书,类只能在理论上造一辆汽车,并且这个说明书非常明确的写了汽车有哪些部件、可以干什么等等信息,我们可以通过这个说明书(类)得知这辆车全方位的信息;对象就是按照这个说明书造出来的一辆汽车实体,是真实存在的,可以开走的。

下面我们用类描述一辆小汽车:

分析:
1,属性
轮胎数.
颜色.
2,行为
运行.

定义类其实就是在定义类中的成员
成员:成员变量就是属性,成员函数就是行为。

class Car
{
	int num;  //成员变量,汽车的属性
	String color;//成员变量

	void run()  //成员函数汽车的功能
	{
		System.out.println(num + "..." + color);
	}
}

class CarDemo
{
	public static void main(String[] arge)
	{
		//在计算机中创建一个car的实例,通过new关键字
		Car c = new Car(); //就是一个类类型的引用变量,指向了该类的对象
		c.num = 4;
		c.color = "red";
		c.run();
	}
}

成员变量和局部变量的区别

1,成员变量定义在类中,整个类中都可以访问;局部变量定义在函数、语句、局部代码块中,只在所属的区域有效。

2,成员变量存在于堆内存的对象中;局部变量存在于栈内存的方法中。

3,成员变量随着对象的创建而存在,随着对象的消失而消失;局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。

4,成员变量都有默认初始化值;局部变量没有默认初始化值。

类类型参数

class CarDemo
{
	public static void main(String[] args)
	{
		Car c1 = new Car();
		Car c2 = new Car();
		show(c1);
		show(c2);
	}

	//汽车改装厂
	public static void show(Car c)//类类型的变量一定指向对象,要不就是null.
	{
		c.num = 3;
		c.color = "black";
		System.out.println(c.num + "..." + c.color);
	}
}

匿名对象
new car();  //匿名对象,其实就是定义对象的简写格式
new Car().run();

没有将car对象赋值给某一变量。

1,当对象对方法仅进行一次调用的时候,就可以简化成匿名对象
2,匿名对象可以作为实际参数进行传递

基本数据类型参数传递

class Demo
{
	public static void main(String[] args)
	{
		int x = 3;
		show(x);
		System.out.println("x="+x);
	}
	public static void show(int x)
	{
		x = 4;
		return ;
	}
}

这道题的结果是3。
首先执行主函数,主函数进栈,然后执行int x = 3; 现在x的值为3。然后调用show函数,所以show 函数进栈,将x = 3 传进去,show函数将x赋值为4,show函数return,show函数出栈,这时,栈中只剩下了主函数中的x = 3 ,然后输出。所以结果为3。

引用数据类型参数传递

class Demo
{
	int x = 3;
	public static void main(String[] args)
	{
		Demo d = new Demo();
		d.x = 9;
		show(d);
		System.out.println(d.x);
	}
	public static void show(Demo d)
	{
		d.x = 4;
	}
}

结果为4。
首先执行主函数,主函数进栈,然后执行Demo d = new Demo(); 这时就在堆中开辟一块空间,同时将它的地址赋值给栈中的d,它中的x赋值为3,执行 d.x = 9; 堆中的x就被赋值为9;执行show(d);  show函数进栈,将对象d传入,堆中的x又被赋值为4;show函数执行完毕,show函数出栈;这时输出d.x。结果就为4。

函数的封装

class Person
{
	private int age;
	public void setAge(int a)
	{
		if (a < 0)
	{
		System.out.println("年龄不能为负数");
		return;
	}
		age = a;
		speak();
	}
	void speak()
	{
		System.out.println("age=" + age);
	}
}

class Test
{
	public static void main(String[] args)
	{
		Person p = new Person();
		p.setAge(20);
	}
}
时间: 2024-12-23 13:31:30

Java学习个人备忘录之面向对象概念的相关文章

java学习笔记(3)之面向对象(1)

下面来谈谈我对面向对象的一些理解和总结. 1.什么叫面向对象?我自己的理解就是一种编程思想,强调对象,是一种思考问题的思维模式.在学习面向对象的时候,我们要建立起自己面向对象的思维模式. (1).先整体,后局部. (2).先抽象,后具体. (3).能做什么,再怎么做. 2.面向对象具有什么特点? (1).面向对象其实就是一种常见的思想,符合人们参考. (2).面向对象的出现,将复杂的问题简单化. (3).面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者. 3.如何学好面向对象. 掌握

Java学习个人备忘录之异常

概述 异常:是在运行时期发生的不正常情况. 在java中用类的形式对不正常情况进行了描述和封装对象. 描述不正常的情况的类,就称为异常类. 以前正常流程代码和问题处理代码相结合,现在将正常流程代码和问题处理代码分离,提高阅读性. 其实异常就是java通过面向对象的思想将问题封装成了对象. 用异常类对其进行描述.不同的问题用不同的类进行具体的描述. 问题很多,意味着描述的类也很多.将其共性进行向上抽取,形成了异常体系. 最终问题(不正常情况)就分成了两大类 Throwable:无论是error,还

JAVA学习第七天——面向对象

将学生和工人的共性描述抽取出来.单独进行描述. 只要学生和工人与单独描述的这个类有关系,就可以了. 继承: 1.提高代码的复用性 2.让类与类之间产生关系.有了关系才有了多态的特性. 注意:千万不要为了获取其他类的功能,简化代码而继承: 必须是类与类之间有所属关系才可以继承,所属关系 is a. java中只支持单继承不支持多继承:因为多继承容易带来安全隐患 因为当功能内容不同时,子类对象不确定要运行哪一个. 但是java保留这种机制.并且用另一种体现形式来完成,多实现 java支持多层继承.也

Java学习(三)面向对象之继承

继 承(面向对象特征之一) 好处: 1:提高了代码的复用性. 2:让类与类之间产生了关系,提供了另一个特征多态的前提. 父类的由来:其实是由多个类不断向上抽取共性内容而来的. java中对于继承,java只支持单继承.java虽然不直接支持多继承,但是保留了这种多继承机制,进行改良. 单继承:一个类只能有一个父类. 多继承:一个类可以有多个父类. 为什么不支持多继承呢? 因为当一个类同时继承两个父类时,两个父类中有相同的功能,那么子类对象调用该功能时,运行哪一个呢?因为父类中的方法中存在方法体.

Java学习笔记16(面向对象九:补充内容)

总是看到四种权限,这里做一个介绍: 最大权限是public,后面依次是protected,default,private private修饰的只在本类可以使用 public是最大权限,可以跨包使用,不同包的子类和无关类都可以使用,可以修饰类,方法,成员变量 不写权限就是default默认权限:限于本包内使用 protected权限:跨包后的类如果有继承关系(子类),不能使用default修饰的,而可以使用protected修饰的,调用时候必须在子类的里面才可以调用父类的受保护权限,注意prote

Java学习个人备忘录之接口

abstract class AbsDemo { abstract void show1(); abstract void show2(); } 当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示-----接口  interface 定义接口使用的关键字不是class,是interface. 对于接口当中常见的成员:而且这些成员都有固定的修饰符1. 全局常量:public static final2. 抽象方法:public abstract 由此得出结论,接口中的成员

Java学习个人备忘录之数组

数组 概念:同一种类型数据的集合,其实数组就是一个容器. 数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素. 格式1:元素类型[] 数组名 = new 元素类型[元素个数]; 格式2:元素类型[] 数组名 = new 元素类型[]{元素1,元素2,元素3,....,元素N}; 内存的划分:1:寄存器2:本地方法区3:方法区4:栈内存 存储的都是局部变量 而且变量所属的作用域一旦结束,该变量就自动释放5: 堆内存存储的是数组和对象(其实数组就是对象) 凡是new 建立的都在堆中.特

Java学习记录(补充三:面向对象的封装和继承)

面向对象的封装package day7; //面向对象的封装 public class Employee { String name = "zhangsan"; private int age; //多个方法重载 public Employee(){ } public Employee(String name,int age){ } public Employee(int age,String name){ } //可以在方法里修改不能访问的属性 public int getAge()

java学习(一)基本概念

1.java的工作方式 源代码---->编译器---->输出的.class文件可在java虚拟机(通过软件实现,如收集.电脑里)上运行. 2.java的程序结构 一个类的程序结构,如图: ---------直观的例子: 3.java是怎么启动的呢 每个java程序有且只有一个main()函数,运行时就在main()中开始执行,这就是起始点(不要问为什么,就是从这开始). 这就是main()函数.(执行的就是这一句,System.out.print("I Rule!");打印