Java面向对象总结

面向对象

面向对象的特点

  • 1.符合人们的思想习惯
  • 2.将复杂事情简单化
  • 3.让曾经在过程中的执行者变成指挥者

    举例

  • 比如说,公司中刚刚接取了一个项目,如果这个事情全部都交给老总做的话,可能会耗时很久很久,所以他就需要去找别人来帮他做。需要去面试选人,也就是寻找几个对象替他去完成工作。这就是面向对象的一种体现。
  • 哪个对象对动作最清楚,定义在哪里

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

  • 成员变量
    • 成员变量定义在类中,整个类都可以访问
    • 成员变量存在于堆内存的对象中
    • 成员变量随着对象创建而生,随对象消失而亡
    • 成员变量都有默认初始值
  • 局部变量
    • 局部变量定义在函数、语句、局部代码块中,只在所属区域有效
    • 局部变量存在于栈内存的方法中
    • 局部变量随着所属区域的执行而存在,随着所属区域结束而释放
    • 局部变量没有默认初始值(使用前必须进行初始化)

      匿名对象

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

    对象的内存体现

  • 以下面这段代码为例

    1
    2
    3
    4
    5
    6
    Car c1 = new Car();
    Car c2 = new Car();
    c1.num = 4;
    c1.color = red;
    c2.num = 5;
    c2.color = blue;
  • 栈中运行主函数,创建c1对象,在堆中开辟一个新的区域,将他的地址值传回栈中,他的num初始值为0,color初始值为null

  • 下面这段代码和上面又有什么不同那
    1
    2
    3
    4
    Car c1 = new Car();
    Car c2 = c1;
    c1.num = 4;
    c2.color = blue;

  • 这里将c1赋值给c2,就是将c1地址给c2,所以c2.color = blue,通过寻址找到并更改的color值就是c1地址下的

    匿名对象

  • 以下面代码,作图演示
    1
    2
    3
    new Car().num = 4;
    new Car().color = red;
    new Car().show();

基本数据类型参数传递

1
2
3
4
5
6
7
8
9
10
class demo{
public static void main(String[] args){
int x;
show(x);
System.out.println("x="+x);
}
public static void show(int x){
x = 4;
}
}

引用数据类型参数传递

1
2
3
4
5
6
7
8
9
10
11
12
class demo{
int x;
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;
}
}

封装

  • 好处:
    • 将变化隔离
    • 便于使用
    • 提高重用性
    • 提高安全性
  • 封装原则
    • 将不需要对外提供的原则都隐藏起来
    • 把属性都隐藏,提供公共方法对其访问

封装思想

  • 封装:指隐藏对象的属性和实现细节,仅对外提供公共访问方式
  • private权限修饰符
  • 私有仅仅是封装的一种体现而已,封装不仅仅有私有一种方式