—————————— 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培训、期待与您交流!——————————