1.面向过程与面向对象
1.面向过程:强调的是过程,即动作。(c语言:以函数体现,然后对函数调用)
2.面向对象:强调的是对象(实体)。(将过程进行封装)(c++,java,c#)
3.面向对象就是一种常见的思想,符合人们的思考习惯。
4.面向对像的出现将复杂问题简单化,让曾经在过程中的执行者变成了对象中的指挥者。
5.面向对象的三个特征: 封装、继承、多态
2. java 描述对象,通过类的形式实现的
1.描述通常是关注两个方面:属性、行为。
2.对象就是该类事物实实在在存在的个体。
3.类与对象之间的关系:
类: 事物的描述
对象:该类事物的实例,在 java 中通过类来创建的。
先有类后有对象。
/*
描述小汽车:
分析:
1.属性:轮胎数、颜色
2.行为:运行
定义类其实就是在定义类中的成员:
成员: 成员变量 即 属性
成员函数 即 行为
*/
class Car
{
int num;
String color;
void run()
{
System.out.println("run");
}
}
class CarDemo
{
public static void main(String[] args)
{
//在计算机中创建一个car实例。通过new 关键字。
Car c = new Car(); //c 就是一个 类类型的引用变量,指向了该类的对象。
c.run();//要使用对象中的内容可以通过 对象。成员的形式完成调用
}
}
成员变量也可以赋值,显示初始化过程。
class Car
{
int num;
String color;
void run()
{
System.out.println(num+"run"+ color);
}
}
class CarDemo
{
public static void main(String[] args)
{
//在计算机中创建一个car实例。通过new 关键字。
Car c1 = new Car(); //c 就是一个 类类型的引用变量,指向了该类的对象。
c1.num =4;
c1.color = "red";
Car c2 = new Car(); //c 就是一个 类类型的引用变量,指向了该类的对象。
c2.num =4;
c2.color = "red";
Car c3 = new Car();
show(c3); //等价
}
public static void show(Car c)//类类型一定指向对象,要么为空null
{
c.num= 4;
c.color="red";
System.out.println(c.num+"run" + c.color);
}
}
3.成员变量和局部变量
区别一:
成员变量定义在类中,整个类中都可以访问。
函数变量定义在函数,语句,局部代码块中,只在所属的区域有效
区别二:
成员变量存在于堆内存的对象中,局部变量存放于栈内存的方法中。
区别三:
成员变量随着对象的创建而存在,随着对象的消失而消失。
局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。
区别四:
成员变量有默认初始化值;局部变量没有。
4.匿名对象(没有名字的对象)
1.当对象对方法仅一次调用的时候就可以简化为匿名对象。
new car().run();
5.封装(隐藏对象的属性和实现细节)
class Person
{
int age;
void speak()
{
System.out.println("age="+age);
}
}
class CarDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.age = -20;
p.speak();
}
}
class Person
{
private int age; //只在本类中有效
public void hha(int a)
{ if(a>0 && a<130)
{
age=a;
}
else
System.out.println("cuo");
}
void speak()
{
System.out.println("age="+age);
}
}
class CarDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.hha = -20;
p.speak();
}
}
封装:
1,将变化隔离
2、便于使用
3、提高重用性
4、
class Person
{
private int age; //只在本类中有效
// public void hha(int a)
// { if(a>0 && a<130)
// {
// age=a;
// }
// else
// System.out.println("cuo");
// }
public void setage(int a)
{
age = a;
}
public void getage()
{
return age;
}
void speak()
{
System.out.println("age="+age);
}
}
class CarDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.setage(-20);
p.speak();
}
}
private: 私有,是一个有权限修饰符。用于修饰成员。
私有的内容只在本类中有效。
注意: 私有仅仅是封装的一种体现而已。