黑马程序员————学习笔记(第五天)

来源:互联网 发布:新人座谈会心得知乎 编辑:程序博客网 时间:2024/05/16 06:57

 —————————— ASP.Net+Android+IOS开发.Net培训、期待与您交流!——————————

面向对象(一)

  特征

    封装、继承、多态。

    使用步骤:找对象、建立对象、用对象、并维护对象之间的关系。

  类与对象的关系

    类:对现实生活中事物的描述。

    对象:这类事物,实实在在存在的个体。

  练习代码:CarDemo.java

/*描述汽车汽车拥有颜色和轮胎数和运行方法*/class Car{String color = "红色"; //汽车颜色int num = 4; // 汽车轮胎数void run() // 运行方法{System.out.println(color + " , " + num);}}class CarDemo{public static void main(String[] args) {Car c = new Car(); // 类类型变量指向对象// 改变颜色c.color = "蓝色";c.run();}}

  成员变量与局部变量

    作用范围:

      成员变量:作用于整个类中。

      局部变量:作用与函数或语句中

    在内存中的位置:

      成员变量:存在于堆内存中,因为对象的存在,才在内存中存在。

      局部变量:存在于栈内存中。


  匿名对象的应用

    格式:如 new Car();

    使用方式:

    1.当对对象的方法只进行一次调用时,可以用匿名对象来完成,这样写比较简化,如果对一个对象进行多次调用时,必须给对象起一个名字。

    2.可以将匿名对象作为实际参数进行传递。


  封装

    定义

      指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。

    好处

      1.将变化隔离

      2.便于使用

      3.提高代码重用性

      4.提高代码安全性

    封装原则

      将不需要对外提供的内容都隐藏起来。

      把属性都隐藏,提供公共方法对其访问。

     

      private:权限修饰符,用于修饰类中的成员,私有化的成员只能在本类中使用。

      注意:私有只是封装的一种表现形式。

     

      对外提供访问方式,可以在访问方式中加入逻辑判断等语句,对语句进行判断可以提供代码的健壮性。


    构造函数

      特点:

      1.函数名与类名一致。

      2.不用定义返回值类型。

      3.不可以写return语句。

      作用:

        给对象初始化。

      注意:

      1.当类中没有定义构造函数时,系统默认给该类添加一个无参的构造函数

      2.多个构造函数是以重载形式存在。


      构造函数与一般函数的不同:

      1.书写不同。

      2.构造函数在对象一建立就运行,给对象初始化。而一般函数是对象调用才执行。

      3.构造函数值运行一次(在对象建立时),而一般函数可以被该对象调用多次。


      定义构造函数的时机:

      在分析事物时,该事物存在就具备一些特性或行为时,那就将这些内容定义在构造函数中。


      构造代码块

        形式:

        {

          初始化语句;

        }

        作用:

        1.给对象进行初始化。

        2.初始化不同对象的共性初始化内容。

        注意:构造代码块在对象一建立就运行,优先于构造函数执行


      this关键字

        应用:

        1.用于区分成员变量与局部变量同名的情况

        2.当本类功能内部使用到了本类对象,都用this表示

        3.构造函数之间互相调用。

 含义:

          this:代表本类的对象。

          哪个对象调用了this对象所在的函数,this就代表哪个对象。

        注意:

 1.this语句只能放在构造函数第一行。

 2.不能出现两个构造函数之间互相调用的情况。

    练习代码:Demo01.java

class Demo01{public static void main(String[] args) {Car c1 = new Car(); // 实例化默认汽车对象c1.showInfo();Car c2 = new Car("红色"); // 实例化带颜色参数的汽车对象c2.showInfo();Car c3 = new Car("五颜六色",8); // 实例化带两个参数的汽车对象System.out.println("c3设置前:");c3.showInfo();System.out.println("c3设置后:");c3.setColor("土豪金色");c3.setNum(16);c3.showInfo();boolean b = c3.compare(new Car("白色",6)); // 通过匿名对象参数传递,比较轮胎数是否相同String str = "不";if (b)str = "相";System.out.println("这两辆车的轮胎数" + str + "同");}}class Car{private String color;private int num;/*构造代码块,用于初始化颜色及轮胎数*/{this.color = "黑色";this.num = 3;}/*无参构造函数*/public Car(){}/*带颜色参数的构造函数*/public Car(String color){this.color = color;}/*带颜色和轮胎数参数的构造函数*/public Car(String color,int num){this(color); // this语句实现构造函数之间的调用this.num = num;}/*颜色的设置方法*/public void setColor(String color){this.color = color;}/*颜色的获取方法*/public String getColor(){return color;}/*轮胎数设置方法*/public void setNum(int num){if (num >= 3)this.num = num;elsethis.num = 3;}/*获取轮胎数*/public int getNum(){return num;}/*比较当前车轮胎数与其它车的轮胎数是否相同*/public boolean compare(Car car){return this.num == car.num;}/*显示汽车信息*/public void showInfo(){System.out.println("颜色:" + color + ",轮胎数:" + num);}}

 —————————— ASP.Net+Android+IOS开发.Net培训、期待与您交流!——————————
0 0
原创粉丝点击