JAVA 学习模块六: 面向对象

这里写图片描述

1.面向过程与面向对象

1.面向过程:强调的是过程,即动作。(c语言:以函数体现,然后对函数调用)

2.面向对象:强调的是对象(实体)。(将过程进行封装)(c++,java,c#)

3.面向对象就是一种常见的思想,符合人们的思考习惯。
4.面向对像的出现将复杂问题简单化,让曾经在过程中的执行者变成了对象中的指挥者。
5.面向对象的三个特征: 封装、继承、多态

2. java 描述对象,通过类的形式实现的

1.描述通常是关注两个方面:属性、行为。
2.对象就是该类事物实实在在存在的个体。
3.类与对象之间的关系:
类: 事物的描述
对象:该类事物的实例,在 java 中通过类来创建的。
先有类后有对象。

/*
描述小汽车:
分析:
1.属性:轮胎数、颜色
2.行为:运行

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

*/


class Car

{
    int num;
    String color;
    void run()
    {
    System.out.println("run");
    }


}

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

        c.run();//要使用对象中的内容可以通过 对象。成员的形式完成调用
    }
}

成员变量也可以赋值,显示初始化过程。


class Car

{
    int num;
    String color;
    void run()
    {
    System.out.println(num+"run"+ color);
    }


}

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

        Car c2 = new Car();  //c 就是一个 类类型的引用变量,指向了该类的对象。
        c2.num =4;
        c2.color = "red";

        Car c3 = new Car();
        show(c3); //等价


    }

    public static void show(Car c)//类类型一定指向对象,要么为空null
    {
        c.num= 4;
        c.color="red";
        System.out.println(c.num+"run" + c.color);
    }
}

3.成员变量和局部变量

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

区别二:
成员变量存在于堆内存的对象中,局部变量存放于栈内存的方法中。

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

区别四:
成员变量有默认初始化值;局部变量没有。

4.匿名对象(没有名字的对象)

1.当对象对方法一次调用的时候就可以简化为匿名对象。
new car().run();

5.封装(隐藏对象的属性和实现细节)

class Person
{
    int age;
    void speak()
    {
        System.out.println("age="+age);
    }
}


class  CarDemo
{
    public static void main(String[] args)
    {
        Person p = new Person();
        p.age = -20;
        p.speak();
    }
}
class Person
{
    private int age;  //只在本类中有效

    public void hha(int a)
    {   if(a>0 && a<130)
    {

        age=a;
    }
    else
        System.out.println("cuo");

    }
    void speak()
    {
        System.out.println("age="+age);
    }
}


class  CarDemo
{
    public static void main(String[] args)
    {
        Person p = new Person();
        p.hha = -20;
        p.speak();
    }
}

封装:
1,将变化隔离
2、便于使用
3、提高重用性
4、

class Person
{
    private int age;  //只在本类中有效

//  public void hha(int a)
//  {   if(a>0 && a<130)
//  {

//      age=a;
//  }
//  else
//      System.out.println("cuo");

//  }

    public void setage(int a)
    {
        age = a;
    }

    public void getage()
    {
    return age;
    }
    void speak()
    {
        System.out.println("age="+age);
    }
}


class  CarDemo
{
    public static void main(String[] args)
    {
        Person p = new Person();
        p.setage(-20);
        p.speak();
    }
}

private: 私有,是一个有权限修饰符。用于修饰成员。
私有的内容只在本类中有效。
注意: 私有仅仅是封装的一种体现而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章