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

来源:互联网 发布:nginx 403页面 编辑:程序博客网 时间:2024/04/29 21:18


/*

面向对象特征:封装,继承,多态。
以后开发:实质就是找对象,没有对象建立对象。
类和对象的关系:类就是对现实生活中食物的描述,对象就是这类事物实实在在存在的个体
事例:
成员变量和局部变量,成员变量作用于整个类中 局部变量作用与函数中或语句中
在内存中的位置:
成员变量:在堆内存中,因为对象的存在,才在内存中存在
局部变量:存在栈内存中。
*/
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注意只能定义在构造函数的第一行第一个语句,因为初始化要先执行。


原创粉丝点击