java面对对象 ,类与对象,封装

来源:互联网 发布:莽荒纪披风进阶数据 编辑:程序博客网 时间:2024/06/05 06:14

一:面向对象
1 面向对象 即是要寻找对象 使用对象 去解决问题 重点在于思想。
2 它的优点:
(1)将复杂的问题简单化 (2)从事物的执行者转化为指挥者 (3)面向对象的思想是贴近人思考的问题即懒人思想
3 (1)类—-一类抽象事物的集合
(2)对象 使用类创造出来的 具体的事物 叫做对象
例子:车———————————类
我的一辆红色法拉利458车———对象
4 面对对象的过程
封装 继承 多态
5 在java中最基本的单位 类
成员变量(实例变量) 属性
书写位置: 类中 方法外
成员方法 相当于行为
6 面向对象的设计
维护类和对象之间的关系
不断操作对象 使用 对象 指挥对象去完成一些功能

举例:写一个学生类
成员变量 姓名 年龄 性别
成员方法 吃法 睡觉 听课

class Student{     //成员变量     String Name;//姓名     int age;//年龄     String gender;//方法     //成员方法     //关键字 返回值类型 方法名(数据列表)(方法体)     //入栈 压栈public void eat() {         System.out.println("吃饭");     }     public void sleep() {         System.out.println("睡觉");     }    public void lesson() {         System.out.println("听课");    }}public class StudentDemo {    //main 函数 弹栈public static void main(String[] args) {        // TODO Auto-generated method stub        //类可不可以重名        //创建一个学生对象        //数据类型 变量名 = 初值 -- 基本数据类型 引用数据类型        //类名 对象名 = new 类名();        //int[] array = new int[] {12345};        //堆内存        //垃圾回收机制        //new 一次 产生一个对象        Student stu = new Student();        //使用成员变量 对象点成员变量        //stu.Name= "wangling";        //stu.age= 18;        //stu.gender="男性";        //stu地址        stu.Name = "wangling";        stu.Name = "wangning";        stu.age = 18;        stu.gender ="男性";        S System.out.println(stu.Name);System.out.println(stu.age);System.out.println(stu.gender);        //成员方法 对象点方法        // 注意:调用无参方法 括号必须带上        //被立即释放,出栈 ,弹栈        stu.eat();        stu.sleep();        stu.lesson();for(int i = 0;i < 10 ; i++ ) {            Student stu1 = new Student();        }}}

二 成员变量和局部变量

成员变量和局部变量的不同之处
1 书写位置 不同
局部变量:在方法中 或 方法申明中
成员变量:再类中 方法外
2初始值不同
局部变量:必须要给定初始值
成员变量:只要你创建了对象就有初始值
3内存存在的位置不同
局部变量:存在栈内存中
成员变量: 存储在堆内存中
4生命周期不同
局部变量:随着方法的入栈儿出生 ,随着方法的出栈而死亡
成员变量:随着对象的出生而出生 , 随着对象的死亡而死亡

class Car{    String name = "法拉利";//名字    String color = "red";//颜色    int shuliang = 4;//轮胎数量    double paiqiliang = 1.70;//排气量    public void use(int a/*局部变量*/) {        int nam;//局部变量        System.out.println("可以行使");    }    public void zyx() {        System.out.println("可以震一下");    }   public void cuncu() {       System.out.println("可以存储物品");   }   //介绍自己的方法   public void sayhi() {       System.out.println(""+name+">>>>>> "+color);   }}
public class CarDemo {    public static void fun1(int num) {        System.out.println(num);        num = 10;    }    //参数是引用数据类型时 如何传参    public static void fun2(Car car) {        car. name = "吉利";        car.color="粉红色";        car.sayhi();    }    public static void main(String[] args) {        int num = 123;        fun1(num);        System.out.println(num+"");        //初始化/创建 一个car        Car car = new Car();        //car的地址传进去        fun2(car);        //地址        // TODO Auto-generated method stub        //创建一个对象        Car car1 = new Car();        car1.name = "布加迪";        System.out.println(car1.name);        car1.sayhi();        //思考两个对象 在内存中的表现        Car car2 = new Car();        car2.name = "兰博基尼";        car2.color = "蓝色";        System.out.println(car2.name);        car2.sayhi();        //两个对象,三个引用        Car car3 =  car2;        car3.sayhi();    }}

两个对象三个引用在内存中的表现-

三 匿名对象
好处 节省代码 使用方便
用处:当你只调用一个方法时使用
如果你要反复调用一个方法 比较浪费内存空间

四 封装
把属性和方法的具体实现隐藏,开放公共访问的方法

private bean (权限修饰符) 系统的关键字
该属性加了private 这个关键字 变成私有的属性
私有属性 本类能访问的 本类以外访问不到
如何访问 private 修饰的成员变量
1 获取
2 修改
java 有实体类的对象
成员变量私有化 是封装的一种表现形式
私有化之后必须要写 set/get 方法
这里写图片描述
这里写图片描述