面向对象1

简单理解

  1. 面向对象是更符合思考习惯的一种思想;
  2. 从过程的执行者转为对象的指挥者;
  3. 可以将复杂的问题简单化。
  4. 举例
    (1)买电脑
    面向过程:自己买分为网上查询、去电脑城询价、砍价、监督组装、送货等步骤,必须亲自去做;
    面向过程:把钱给专业人士,完成以上步骤。
    比如,完成一个项目,一个牛人也可以完成,但团队的效率更高,项目经理可以调用团队中的成员不同的能力分工完成。
    (2)面试例子
    面试官您就是用面向对象的思想在思考问题,公司有了项目需要人开发,给您一个人开发也能完成就是需要时间长,需要具备专业知识的人来完成,我就是。您只要指挥我,调用我的功能,我就能给您一个好的结果。
    这里写图片描述

类与对象的关系

类
类:用于描述事物
对象:该类事物具体的个体。
汽车:
1.属性:
轮胎数
颜色
2.行为:
运行
先写类,即先描述类,再new具体对象
用java语言对其进行描述
这里写图片描述

关系

1.首先定义类,才有对象;
2.对象可以看成是静态属性(成员变量)和动态变量(方法)的封装体;
3.类是用来创建同一类型对象的“模板”,在一个类中定义了该类对象所具有的成员变量以及方法;
4.J2SDK提供了很多类供编程人员使用,程序员也可以自己定义类。
成员变量=属性,方法=函数所有变量都必须定义属性

创建对象

//先定义类
class Car
{
    //描述轮胎数
    int num;
    //描述颜色
    String color;
    //描述运行功能(方法)
    void run()
    {
        System.out.println(num);
    }
}

class CarDemo
{
    public static void main(String[] args)
    {
        //定义该类的目的是为了定义主函数。让该类运行,在其中调用Car中的内容。
        //要想使用Car类中的内容,必须先有Car的对象。
        //通过new关键字完成,对象的创建
        Car c = new Car();//创建了一个Car类型的变量c指向了Car类型的对象,数据类型 变量名 = 初始化值,类似于int x = 4
    }
}

对象的内存体现

1.对象存在的目的就是用来存储数据的,区别于数组可以存不同类型的数据;
2.new 先开辟地址,再存入数据。new几次就有几个对象!!!
1
2
在上图中,若执行c1=null,则只是c1位空,c2仍然指向原地址。
成员变量和局部变量的区别
1.源代码中定义的位置不同
成员变量定义在类中;
局部变量定义在方法中(只要是类的下一级大括号都是局部变量)也可以定义在语句中;
2.内存中的存储位置不同
成员变量存储在堆内存中的对象中;
局部变量存储在栈内存的方法中;
3.生命周期不同
成员变量随着对象的出现而出现;
局部变量随着所属区间运行出现,运行结束而释放。

补充

成员变量又分为以static修饰的类变量和不以static修饰的实例变量
例如:

public class Wan
{
    static int age;  //类属性的成员变量
    public void show()
    {
        System.out.println(age);
        }
    }

public class WanWan
{
    public static void main(String[] args)
    {
        Wan w1 = new Wan();
        Wan w2 = new Wan();
        w1.age = 1;
        w2.age = 2;
        w1.show();
        w2.show();
}
    }
//输出结果为2  2

封装

隐藏实现细节,对外提供公共的访问方式(接口)。

私有

对私有的数据。可以通过方法的方式对其进行访问。
封装的体现之一:将数据私有化,对外提供对应的setXXX,getXXX来进行访问.
在数据类型前加 private int a;则a只能在类中被调用。

/*
    描述人。
        属性:年龄
        行为:说话
*/
class Person
{
    int age;
    void speak()
    {
        System.out.println("age=" + age);
    }
}

class PersonDemo
{
    public static void main(String[] args)
    {
        //创建Person的对象并调用。
        Person p = new Person();
        p.age = -20;//与现实不符
        p.speak();
    }
}

基本类型变量与引用型变量传递

1.基本数据类型

public class VarTrf
{
    public static void main(String[] args)
    {
    int x = 4;
    show(x);
    System.out.println("x = " + x); //结果为4;
    }

    public static void show(int x)  //即使加了int返回值,仍然输出x=4,因为main并没有使用该返回值
    {
        x = 5;
    }
}

2.引用数据类型

public class VarTrf
{
    int x=4;
    public static void main(String[] args)
    {
        VarTrf var = new VarTrf();
        var.x = 5;
        show(var);
        System.out.println("var.x = " + var.x); //输出6
    }

    public static void show(VarTrf d)   //d与var指向同一地址
    {
        d.x = 6;//此处赋值在地址中就做了改变
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值