一、面向对象的特点三个特征:封装,继承,多态
面向对象是一种思想,它将功能封装进对象,然后使用具备了功能的对象。
面向对象使复杂的事情变得简单化。并且使我们的角色从执行者过渡到指挥者。
在以后的开发过程中对于对象的使用无外乎:找对象,如果没有就建立对象,使用对象,维护对象的关系。
二、类与对象的关系
类就是:对现实生活中事物的抽象描述(描述事物的属性和行为,属性对应类中的成员变量,行为对应函数())
对象:就是这类事物,实实在在存在个体。
他们的关系就如同模具和用这个模具制作出的物品之间的关系。一个类为它的全部对象给出了一个统一的定义,而他的每个对象则是符合这种定义的一个实体,因此类和对象的关系就是抽象和具体的关系。概括来说类就是对象的集合。
实例:
class Car //在java中创建一个类命名Car.用来生成汽车
{
int num=4;//汽车轮胎数
String color="blue"; //汽车的颜色
void run()//生产,并输出生产出的车的颜色和轮胎数
{ System.out.println(color+";"+num); }
}
class CarDemo
{
public static void main(String[] args)
{
//生产汽车。创建对象在java中通过new操作符来完成,其实就是在堆内存产生一个实体。(即生产了一台车)
//每new出一个对象就表示在堆内存产生一个实体,也就是新生产出一辆车。
Car c = new Car();//c就是一个类类型变量。记住:类类型变量指向对象。
/*
通过c.方法或成员变量对这个Car类进行操作,如下:
c.num=5;更改轮胎数
c.color='red';更改颜色
c.run();生产
*/
}
}
三、成员变量和局部变量的区别
1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型
2.成员变量存储在堆,局部变量存储在栈
3.他们作用的范围不同,成员变量在定义它的整个类中有效,局部变量只在定义它的方法中有效
4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值
四、匿名对象
匿名对象是对象的简化形式,它只在方法仅进行一次调用时使用,或者作为实际参数进行传递。如果对一个对象进行多个成员调用,必须给这个对象起一个名字。
示例:
new Car().run();
五、封装
封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。(提供公共访问方式有助于提高代码的健壮性)
好处:将变化隔离;便于使用;提高安全性;提高重用性
原则:将不需要对外提供的内容都隐藏起来。
权限修饰符Private:私有,用于修饰类中的成员(成员变量,成员函数)。私有后只在本类中有效。‘
注:私有仅仅是封装的一种表现形式。
六、构造函数
特点:函数名与类名相同,且不用定义返回值类型,不可以写return语句
作用:给对象初始化
示例:
class Demo
{
Demo(){执行语句;}
}
对象一建立就会调用与之对应的构造函数。且一个对象建立,构造函数只运行一次。
什么时候使用构造函数?
当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。
注:如果类中没有定义构造函数,系统会默认给该类加入一个隐藏的空参数的构造函数。多个构造函数是以重载的形式存在的。
构造函数代码块:
作用给对象初始化,对象一建立就运行,而且优先于构造函数执行。它给所有对象进行统一初始化。(在里面定义不同对象共性的初始化内容)
this:看上去,是用于区分局部变量和成员变量同名的情况,其实this代表它所在函数所属对象的引用(简单说哪个对象在调用this所在的函数,this就代表哪个对象)。
this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。
示例:
class Person
{
Private String name;
Person(String name)
{
this.name=name;//this代表的就是p
}
}
Class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person("lisi");
}
}
构造函数间this的间接调用:
this:用于构造函数之间进行互相调用时只能用this(参数);方式来调用。
示例:
class Person
{
private String name;
private int age;
Person(String name)
{
this.name=name;//this代表的就是p
}
Person(String name,int age)
{
this(name);//this代表的就是p,相当于new Person(name)
this.age=age;
}
}
Class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person("lisi",20);
}
}
注:this();语句规则只能放在构造函数的第一行。因为初始化要先执行。
|
|