day05(面向对象开始)
一、面向对象的特征
1.封装(encapsulation)
2.继承(inheritance)
3.多态(polymorphism)
开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。
设计的过程:其实就是在管理和维护对象之间的关系。
二、用面向对象的思想描述事物
1.类定义:
属性:类中的成员变量
行为:类中的成员函数
public class Car { String color; // 成员变量 int num; // 成员变量 // 成员函数 void run() { System.out.println("running"); } }
2.创建对象:
class CarDemo { public static void main(String[] args) { // java 中创建对象,使用new关键字。在堆内存中开辟了空间。产生了一个实体。 Car c = new Car(); //为了方便使用生产的汽车,就起了一个名字。 //那么c是什么类型,是Car类型。叫做类类型变量。 //注意 c是持有的引用,新生产的汽车并没有直接赋值给c,持有的只是一个引用。c就想电视遥控器一样。 c.run(); //使用对象的功能。 } }
3.对象成员的调用:
public class CarDemo { public static void main(String[] args) { Car c = new Car(); //对象名.成员变量名将返回成员变量中存储的数值 int num=c.num; System.out.println(num); //对象名.成员变量名,也可以给成员变量赋值 c.num = 4; c.color = "black"; //对象名.成员方法(); c.run(); } }
三.例子:需求: 使用java描述一个车与修车厂两个事物, 车具备的公共属性:轮子数、 名字、 颜色 ,还具备跑的功能行为。跑之前要检测轮子是否少于了4个,如果少于了4个,那么要送到修车厂修理,修车厂修理之后,车的轮子数要补回来4个。 然后车就继续的跑起来。修车厂: 具备公共属性: 名字、 地址、 电话。公共的行为: 修车。
public class Test { public static void main(String[] args) { Car c = new Car(); c.wheel=4; c.name="bmw"; c.color="red"; for(int i=0;i<20;i++){ c.run(); } c.wheel=3; c.run(); Garage g =new Garage(); //新建Garage类型,才能使用repair方法 g.repair(c); c.run(); } } class Car{ int wheel; String name; String color; public void run(){ if(wheel==4){ System.out.println(name+"running"); }else{ System.out.println("赶紧去修理"); } } } class Garage{ String name; String address; String tel; public Car repair(Car c){ //返回Car类型(注意) c.wheel=4; System.out.println("修好了"); return c; } }
初学者的经典错误:
1. 变量在同一个作用域(大括号)上是可以直接访问的。
2. 如果一个类要访问另外一个类变量时,那么这时候就只能通过创建对象进行访问。(仅对于目前正确)
四.内存分析
1.
2.
3.