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

 —————————— 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;
		else
			this.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培训、期待与您交流!——————————
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值