• Java面向对象(一)----初次见面


    面向对象


    面向过程:根据业务逻辑从上到下写代码
    函数式编程:对一些功能的代码封装到函数中,日后无需重复编写,直接调用函数就可以了
    面向对象将所有的功能进行封装,面对的事封装了功能的实体(对象),即面向对象。
    面向对象基于面向过程,只是把过程进行了对象的封装。
    只要找到了对象,就可以使用对象中的功能。

    通俗点讲,你去饭店去吃水煮肉,你不需要会做水煮肉,只需要告诉大厨你要吃水煮肉,他会做就可以了,你直接指挥他给你做就可以了,这就是面向对象。

    所以,以后开发,先找对象以及对象的功能。如果没有,自己创建对象并将所需的功能定义到该对象中。

    面向对象的好处:

    1.面向对象是一种更符合人们思考习惯的思想
    2.面向过程中更多的体现的是执行者,面向对象中更多的体现的是指挥者。
    3.面向对象将复杂的问题简单化了。

    佛曰:世间万物皆为对象。

    面向对象如何应用到需求中呢?

    在需求中尽量地去寻找对象。(从问题领域抽取对象)
    最简单的思考访问:一般情况,名词表示的大多是对象。
    比如:
    需求:将大象装进冰箱里。
    对象就是:大象,冰箱

    一副图简单介绍对象的关系

    可以理解为:
    类就是图纸
    汽车就是堆内存中的对象

    类的定义

    生活中描述事物无非就是描述事物的属性行为
    比如:人有身高体重的属性,有吃饭,睡觉等行为。
    描述人可以这样描述:

    事物的属性:
        身高;
        体重;
    事物的行为(功能):
        吃饭;
        睡觉
    

    简单理解:属性就是数值,其实就是变量;行为就是功能,就是函数。

    java中用类class描述事物也是如此。
    属性:对应类中的成员变量
    行为:对应类中的成员函数

    定义类其实是在定义类中的成员变量和成员函数

    类与对象的关系:

    • 类:对事物的描述。需要体现属性和行为。

    • 对象:该类食物创建的实例(实体),通过该对象调用具有的属性和行为。

    成员变量和局部变量的区别?

    成员变量

    • 成员变量定义在类中,在整个类中都可以被访问

    • 成员变量随着对象的建立而建立,存在于对象所在的堆内存中。

    • 成员变量有默认的初始化值。

    局部变量

    • 局部变量之定义在局部范围内,如:函数内,语句内等
    • 局部变量存在于栈内存中
    • 作用的范围结束,变量空间会自动释放
    • 局部变量没有默认初始化值
        class Person{
            //定义属性
            int height;//身高
            int weight;//体重
            
            //定义方法
            public void eat(){
                System.out.println("eatting...");    //吃饭
            }
            public void Zzzz(){
                System.out.println("Zzzzzz...");    //睡觉
            }
        }
    

    欢喜冤家publicprivate(私有)

    private关键字

    • 是一个权限修饰符
    • 用于修饰成员(成员变量和成员函数)
    • 被私有化的成员只在本类中有效

    常用的方法:

    • 将成员变量私有化,对外提供对应的setget方法对其进行访问。提高对数据访问的安全性。

    先来看public和private的区别

    class PersonDemo1{
    	public static void main(String[] args){
    		Person p = new Person();
    		System.out.println(p.weight);
    		System.out.println(p.height);		
    	}	
    }
    class Person{
            private int height;
            public int weight = 60;
            public void eat(){
                System.out.println("eatting...");
            }
            public void Zzzz(){
                System.out.println("Zzzzzz...");
            }
    }
    

    如果只输出体重的话,是可以输出的,因为体重是public修饰的,意思是都可以访问。

    而身高,被private修饰之后,就成了私有变量,外部就不能访问,编译之后报错:

    PersonDemo1.java:5: 错误: height 在 Person 中是 private 访问控制
                    System.out.println(p.height);
    
    

    有些属性(变量)不想被外界更改,或者不想被外界调用,可以使用private。

    那如果想被使用呢,那么就对外提供对应的setget方法对其进行访问。提高对数据访问的安全性。

    class PersonDemo1{
    	public static void main(String[] args){
    		Person p = new Person();
    		p.setHeight(175);           //通过set方法对私有变量进行操作
    		System.out.println(p.weight);
    		System.out.println(p.getHeight());		//调用方法记得加()
    	}	
    }
    class Person{
            private int height;
            public int weight = 60;
            public void eat(){
                System.out.println("eatting...");
            }
            public void Zzzz(){
                System.out.println("Zzzzzz...");
            }
    		//设置外部访问的接口,写接口
    		public void setHeight(int h){
    			height = h;
    		}
    		//设置外部访问的接口,读接口
    		public int getHeight(){
    			return height;
    		}
    }
    

    这就是面向对象三个特性之一——封装

  • 相关阅读:
    【Unity】校验身份证号有效性
    【Unity】敏感词过滤
    【C#】2.C#程序结构
    常用Git命令手册
    Android删除指定路径下指定前缀或后缀的文件
    《Android源码设计模式》学习笔记之ImageLoader
    Android截屏的几种实现
    react 项目 合并单元格解决方案
    iconfont字体图标的使用方法(转)
    如何让antd的Modal组件的确认和取消不显示(或自定义按钮)(转载)
  • 原文地址:https://www.cnblogs.com/zhqin/p/10006124.html
Copyright © 2020-2023  润新知