zoukankan      html  css  js  c++  java
  • java学习笔记6(面向对象1:概念,private)

    1.思想:

      面向过程的思想:遇到问题时想,我该如何做,然后分步骤实现;

      面向对象的思想:遇到问题时想,我该派谁去做这件事,至于他怎么做,与我无关,我只要最后的结果。

      

      实际举例:我们要组装一台电脑;

      面向过程:我们要去网上看各种硬件参数性价比,去商城询问价钱,然后挑选出来最合适的,买各种配件自己组装;

      面向对象:找一个懂电脑的专家,然后告诉他我们要一台电脑,他组装好给我。

    2.面向对象的好处:

      1.更符合人们的思考习惯;

      2.面向对象更像一个指挥者,而面向过程是执行者;

      3.面向对象的思维方式可以将复杂的问题简单化;

      4.万物皆对象。

      

      举例:用类来描述汽车

      定义汽车类:

    public class Car {//定义一个汽车类
        String color;//定义颜色的属性
        int count;//定义车轮数的属性
        public void run(){//定义跑的方法
            System.out.println(color+"的"+count+"轮车在跑");
        }
    }

      运行汽车:

    public class Test1 {
        public static void main(String[] args) {
            Car c=new Car();
            c.color="红色";
            c.count=3;
            c.run();
        }
    }

      对象的内存分析:

      1.main方法进入栈中运行

      2.创建一个Car类,在堆内存开一片空间,存入这个新建的对象,类的成员变量跟随进入堆中,并赋予默认值(null,0)

      3.这个内存地址传给引用型变量c,即c指向内存中的这个对象

      4.c指向的内存中的变量color,count被修改

      5.方法run由对象c调用,进栈执行

      6.run方法执行完毕,释放栈内存

      7.main方法结束,释放栈内存

      8.c变量消失,堆内存中的对象被清除,释放内存

    3.类和对象的关系:

      类:对某一类事物的抽象描述;

      对象:用于表示现实中该事物的个体;

      类与对象的关系:类是对象的模板,对象是类的 实例;

    4.成员变量和局部变量的关系

      写在类中的变量是成员变量,写在类中的方法中的变量是局部变量。

      区别:1.作用域:成员变量作用范围是整个类,局部变量作用与方法内或语句内;

         2.默认值:成员变量有默认值(null,0,0.0),局部变量没有默认值,不赋值不能用;

         3.内存位置:成员变量跟随对象进入盏中进行存储,局部变量跟随自己的方法进入盏内;

         4.生命周期:成员变量跟随对象存储在堆内存中等待jvm清理,生命周期相对更长;

                 局部变量跟随方法,只要方法出栈,就不存在了,生命周期相对更短。

    5.面向对象三大特征: 封装,继承,多态;

      封装的表现:

          方法就是一个封装体,类也是一个封装;

      封装的特点:

          1.提高了代码的复用性;

          2.隐藏了实现细节,还要对外提供可以访问的方式,便于调用者的使用;

          3.提高了安全性。

    6.private关键字

      建一个人的类:

    public class Person {
        String name;
        int age;
        public void run(){//定义跑步的方法
            System.out.println(age+"岁的"+name+"在跑步");
        }
    }

    建测试类:

    public class Test {
        public static void main(String[] args) {
            Person p=new Person();
            p.name="小明";
            p.age=1000;
            p.run();
        }
    }

    运行结果:

    在这个运行结果中,1000岁的小明在跑步;很明显,这个年龄是错误的,为了应对这个问题,我们就想:如果不能修改变量的值,这个问题就能解决;于是就有了private关键字;

    被private修饰的成员,只能在本类中使用;可以对私有的成员提供公共的访问方式--方法;

    public class Person {
        private String name;
        private int age;
        public String getName(){
            return name;
        }
        public void setName(String name){
            this.name=name;
        }
        public int getAge(){
            return age;
        }
        public void setAge(int age){
            if(age>130||age<0){
                System.out.println("请输入正确的年龄!!!");
                this.age=20;
            }else{
                this.age=age;
            }
        }
        public void run(){
            System.out.println(age+"岁的"+name+"在跑步");
        }
    }
    public class Test {
        public static void main(String[] args) {
            Person p=new Person();
            p.setName("小明");
            p.setAge(30);
            p.run();
        }
    }

    运行结果

  • 相关阅读:
    改善ERP的用户体验,个性化用户界面(Jquery 提供源码)
    一个美国富人在洗手间里陪女佣孩子吃晚餐的故事
    easyui datagrid 批量 提交 json 数据到服务器
    XML基础
    Asp.Net 上传大文件专题(1)概述:上传大文件的难点
    Asp.Net 上传大文件专题(3)从请求流中获取数据并保存为文件[下]
    Asp.Net上传大文件系列
    Asp.Net 上传大文件专题(3)从请求流中获取数据并保存为文件[上]
    XM操作类
    Asp.Net 上传大文件专题(4)利用ajax技术显示上传进度
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/10524368.html
Copyright © 2011-2022 走看看