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

四.内存分析

1.

2.

3.

 

原文地址:https://www.cnblogs.com/stellar/p/5152165.html