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();

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);
}
}

posted @ 2014-12-06 15:45  Y_zr  阅读(125)  评论(0编辑  收藏  举报