13.面向对象

一.java面向对象的三条主线

1.java类以及类的成员:属性,方法,构造器,代码块,内部类
2.面向对象的三大特征:封装,继承,多态
3.其他关键字:this super,static,final,interface,abstract,package,import等

二.人把大象装进冰箱

1.面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做
把冰箱门打开
把大象抬起,装进去
把冰箱门关闭

2.面向对象,强调的是具备了功能的对象,以类/对象为最小单位,考虑谁来做

人{
        打开(冰箱){     
            冰箱.打开();
        }
        
        抬起(大象){
            大象.进入(冰箱);
        }
        
        关闭(冰箱){
            冰箱.闭合();
        }
        
}



冰箱{

        打开(){};
        闭合(){};
}

大象{

    进入(冰箱){
        
    }
}

三.面向对象的2个要素

类Class和对象Object是面向对象的核心概念
类: 是一类事物的描述,是抽象的,概念上的定义
对象: 是实际存在的该类事物的每个个体,因而也称为实例instance

常见的类成员有,
属性:对应类中的成员变量 属性=成员变量=域,字段=field
行为:对应类中的成员方法 方法=行为=成员变量=函数=method

创建类的对象=类的实例化=实例化类

四.类和对象的使用(面向对象思想的实现)

1.创建类,设计类的成员
2.创建类的对象
3.通过"对象.属性"或"对象.方法"调用对象的结构

五.如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性,(非static)

如果我们修改一个对象的属性,则不影响另一个对象的属性

六.对象的内存解析

堆heap:所有的对象实例以及数组都在在堆上进行分配
栈stack:存储局部变量(方法中的变量都是局部变量,如)
方法区method area:用于存储已被虚拟机加载的类信息,常量,静态变量,静态域,即时编译器编译后的代码等.

1.创建类,设计类的成员

class Person{

    //属性
    String name;
    int age = 1;
    boolean isMale;
    
    //方法
    public void eat(){
    
        System.out.println("人要吃饭");
    }
    public void sleep(){
        
        System.out.println("人要睡觉");
    }
    public void talk(String language){
        
        System.out.println("人要说话,使用的语言是:"+ language);
    }


}

2..创建类的对象

public class OOPTest {
    public static void main(String[] args) {
        //创建person类的对象
        Person p1 = new Person();
        
        //调用对象的结构:属性,方法
        //调用属性:"对象.方法"
        p1.name = "Tom";
        p1.isMale = true;
        System.out.println(p1.name);
        
        //调用方法:"对象.方法"
        p1.eat();
        p1.sleep();
        p1.talk("Chinese");
        
        
        Person p2 = new Person();
        System.out.println(p2.name);//null ? TOm?  报错?   null
        
        //将p1变量保存的对象地址值赋给了p3,导致p1和p3指向了堆空间的同一个对象实体
        Person p3 = p1;
        System.out.println(p3.name);//TOM
        
        p3.age=10;
        System.out.println(p1.age);//也是10
        
    
    }
}

你可能感兴趣的:(13.面向对象)