您的位置:首页 > 编程语言 > Java开发

java基础整理五(面向对象1)

2013-09-06 07:29 267 查看
/*

面向对象特征:封装,继承,多态。

以后开发:实质就是找对象,没有对象建立对象。

类和对象的关系:类就是对现实生活中食物的描述,对象就是这类事物实实在在存在的个体

事例:

成员变量和局部变量,成员变量作用于整个类中 局部变量作用与函数中或语句中

在内存中的位置:

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

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

*/

class Car//定义一个类为车,相当于汽车图纸 不用独立运行不用写主函数

{
//描述颜色
String color = "红色";
//描述轮胎数
int num=4;
//运行行为,功能
void run()
{
System.out.print(color+".."+num);
}

class CarDemo//相当于拿图纸造汽车

{
public static void main(String[] args)
{
//生产汽车,在java中通过new操作符来完成,实质就是在堆内存中产生一个实体
Cae c = new Car();//c就是一个类类型变量,记住:类类型变量指向对象
//需求:将已有的车的颜色改成蓝色。指挥该对象做事情,在java指挥方式:对象.对象成员
c.color = "blue";
c.run();//运行前面打印出 blue 4
Car c1 =new Car();再这样写又新建一个红色四轮车
new Car().color = 5;匿名对象写法
new Car().color = "blue";
new Car().run();//都为单独关系 最后运行的结果是 num 4 color red
//匿名对象使用方式1、当对对象的方法只调用一次时可以用匿名对象来完成这样比较简化
//如果对一个对象惊喜多个成员调用必须给这个对象起名字。
//方式2、可以将匿名对象作为实际参数进行传递
}

}

需求:汽修厂将汽车改成三轮黑车
Car q =new Car();

show(q);

show (new Car())//用匿名对象法带入的话更简单一些

public static void show(Car c)
{
c.num =3;
c.color ="black";
c.run();

}

//封装:隐藏对象的属性和实现细节仅对外提供公共访问方式

//原则:将不需要对外的内容隐藏 把属性隐藏提供公共方法对其访问

//private:私有权限修饰符 修饰类中的成员(成员变量,成员函数)且只在本类中有效

//age私有化后类以外即使建立对象也不能访问 在person类中提供对应访问age方式

//提供访问方式,就是因为可以在访问方式中加入逻辑判断语句对房屋数据惊喜操作,提高代码健壮性。

class person

{
private int age;
public void setAge(int a)//此处为私有化提供访问口
{
if(a>0&& a<130)
{
age =a;
speak();
}
else
System.out.println("feifa age")

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

}

class personDemo

{
public static void main(String[] args)
{
person p =new person();
p.setAge(20);
p.speak();
}

}

构造函数:

特点:函数名与类名同 不用定义返回值类型 不可以写return语句

注意:默认构造函数的特点 多个构造函数是以重载的形式存在

当一个类中没有定义构造函数,系统会默认给该类加入一个空参数的构造函数

当在类中自定义了构造函数后,默认的构造函数就没了

对象一建立就会调用与之对应的构造函数。作用:给对象进行初始化

class person

{
private String name;
private int age;

{
System.out.println("person code run");//此处为构造代码块,优先执行

}
person()
{
System.out.println("A:name="+name+",age="+age);
}
person(String n)
{
name=n;
System.out.println("B:name="+name+",age="+age);
}
person(String n,int a)
{
name = n;
age = a;
System.out.println("C:name="+name+",age="+age);
}

}

class persondemo2

{
public static void main(String[] args)
{
person p1 =new person();//调用对应的构造函数
person p2 =new person("lisi");
person p3 =new person("wangwu",10);
}

}

/*构造函数与一般函数写法不同运行也不同 构造函数对象一建立

构造函数只运行一次而一般方法可以被对象多次调用。

什么时候定义构造函数 当分析事物时,该事物存在具备一些特性

或行为,那么僵这些内容定义在构造函数中。

构造代码块 作用:给对象进行初始化 对象一建立就运行,且优先于

构造函数执行。可以定义对象共性初始化内容。

与构造函数区别:构造代码块是给所有对象进行统一初始化,构造函数是

给对应的对象初始化。

this:区分局部变量和成员变量 this代表本类对象即代表它所在函数所属对象的引用

哪个对象在调用this所在函数this就代表那个对象

this应用:当定义类中功能时,该函数内部要用到调用该函数时,这时就用this来表示这个对象

但凡本类功能内部使用到了本类对象都用this表示。

*/

class person

{
private String name;
private int age;
person(String name)
{
this.name = name;
}
person(String name,int age )
{
this.name = name;
this.age = age;
}

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

}

class persondemo3

{
public static void main(String[] args)
{
person p2 =new person("lisi");//此时this代表p2的name
person p3 =new person("wangwu",10);//此时this代表p3的name和age
}

}

前面简写:

this语句:用于构造函数之间互相调用。

class person

{
private String name;
private int age;
person(String name)
{
this.name = name;
}
person(String name,int age )
{
this(name);//this语句:用于构造函数之间互相调用 此时调用的是上方构造函数 相当p(name);
this.age = age;
}
this注意只能定义在构造函数的第一行第一个语句,因为初始化要先执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: