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

来源:互联网 发布:出国关闭蜂窝移动数据 编辑:程序博客网 时间:2024/06/14 17:52
对象,其实就是该类事物实实在在存在的个体。

类与对象之间的关系?
类:一类事物的描述。
对象:该类事物的实例。在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);}}
原创粉丝点击