Java基础---第五天 面向对象

来源:互联网 发布:wine怎么使用 mac 编辑:程序博客网 时间:2024/06/06 02:33
一、面向对象  面向对象概念、类与对象的关系、封装、构造函数、this关键字、static关键字、单利设计模式
        1、理解面向对象
                (1)、面向对象是相对面向过程而言
                (2)、面向对象和面向过程都是一种思想
                (3)、面向过程强调是功能行为
                (4)、面向对象将功能封装进对象,强调具备了功能的对象
                (5)、面向对象是基于面向过程的
                (6)、面向对象三个特征:封装,继承,多态
        2、名词提炼法
                人开门:
                人{
                        开门(门){
                                门.开门();
                        }
                }
                门{
                        开门(){
                                操作门轴。
                        }
                }
        3、映射到java中,描述就是class定义的类
                (1)、具体对象就是java在对内存中使用new建立实体。
                (2)、类就是现实生活正事物的描述
                (3)、对象就是这类事物,实实在在的个体
                (4)、描述事物就是在描述事物的的属性和行为
                (5)、属性对应类中的变量,行为对应的类中的函数(方法)
                (6)、其实定义类,就是在描述食物,就是在定义属性和行为,属性和行为,属性和行为,共同成为类中的成员(成员变量,成员方法)
        4、使用对象
                (1)、使用 new 操作符来建立对象
                (2)、对象.变量 对象.方法()        
                class Car{
                        private String color = "red";
                        private int num = 0;
                        public void run(){
                                System.out.pringln("color = "+color+" ; num = "+num);
                        }
                }
                
                class CarDemo{
                        public static void main(String[] args){
                                Car c = new Car();
                                c.color = "blue";
                                c.run();
                        }
                }
        5、成员变量,局部变量
                (1)、作用范围:成员变量作用于整个类中,局部变量作用于函数中,或者语句中
                (2)、在内存中的位置:成员变量在堆内存中,因为对象的存在,才在内存中存在。局部变量存在于栈内存中
        6、匿名对象
                匿名对象是对象的简化形式,
                匿名对象两种使用情况
                        当对对象方法仅进行一次调用的时候
                        匿名对象可以作为实际参数进行传递
                class Car{
                        private num;
                        void run(){
                                System.out.print("run");
                        }
                        public static void show(Car c){
                                System.out.print("run");
                        }
                        public static void main(String[] args){
                                new Car().run;  //使用匿名对象
                                show(new Car());
                        }
                        
                }
        7、封装概述
                1、封装:是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式
                2、好处
                        (1)、将变化隔离
                        (2)、便于使用
                        (3)、提高重用行
                        (4)、提高安全性
                3、封装原则
                        (1)、将不需要对外提供的内容都隐藏起来
                        (2)、把属性都隐藏,提供公共方法对其访问
        8、private 封装 
                (1)、private 关键字
                        是一个权限修饰符
                        用于修饰成员(成员变量和成员函数)
                        被私有化的成员只在本类中有效
                (2)、常用之一
                        将成员变变量私有化,对外提供对应的set,get方法对其进行访问,提高对数据访问的安全性
                        之所以对外提供访问方式,就是因为可以在访问方式中加入逻辑判断等语句
                        对访问的数据进行操作,提高代码的健壮性
        9、对象调用成员变量
                对象名.成员变量  
        10、构造函数
                (1)、特点
                        1、函数名与类名相同
                        2、不用定义返回值类型
                        3、不可以写return 语句
                (2)作用:给对象进行初始化
                (3)、主意
                        1、默认构造函数的特点
                        2、多个构造函数适宜重载的形式存在的
                (4)、对象一建立就会调用与之对应的构造函数
                (5)、当一个类中没有定义构造函数时,那么系统会默认给该类加入一个默认的空参数的构造函数
                (6)、当在类中定义了用户的构造函数,则默认的构造函数将不存在
                (7)、构造函数与一般方法的区别
                        构造函数在对象建立时执行,只有一次
                        一般方法时,只要调用就会执行
                (8)、什么时候定义构造函数呢:当分析事物时,该事物存在剧本一些特性或者行为,那么将这些内容定义在构造函数中
        11、构造代码块
                (1)作用:给对象进行初始化,对象一建立,就运行,而且优先于构造函数执行。
                (2)、和构造函数区别
                        构造代码快是给所有对象进行统一初始化
                        而构造函数是给对应的对象初始化
                (4)、格式
                        {  }
                (3)、
                        class Car{
                                private num;
                                {
                                        System.out.print("run");
                                }
                                void run(){
                                        System.out.print("run");
                                }
                                public static void show(Car c){
                                        System.out.print("run");
                                }
                                public static void main(String[] args){
                                        new Car().run;  //使用匿名对象
                                        show(new Car());
                                }
                                
                        }
        12、this关键字:区分局部变量和成员变量
                (1)、this 代表本来的对象,代表它所在函数对象的引用。简单说哪个对象在调用 this 所在的函数,this就代表哪个对象
                (2)、是用于区分局部变量和成员变量同名的情况
        13、this 关键字 应用
                class Demo{
                        privat int age = 0;
                        Demo(int age){
                                this.age = age;
                        }
                        void compare(Demo d){
                                return this.age==d.age;   //this 为调用该函数的对象的引用,的为传过来的对象
                        }
                        public static void main(){
                                Demo d = new Demo(20);
                                Demo d2 = new Demo(21);
                                d.compare(d2);
                        }
                }
        14、this关键字在构造函数间调用
                (1)、this 构造函数,只能放在构造函数的第一行,否则会报错,因为初始化要先执行
                class Demo{
                        privat int age = 0;
                        privat String name = 0;
                        Demo(int age){
                                this.age = age;
                        }
                        Demo(String name,int age){
                                this.name = name;                        //这两个是一个,this 就相当于 对象(数据)
                                this(age);                                        //
                                this.age = age;
                        }


                        public static void main(){
                                Demo d = new Demo(20);
                                Demo d2 = new Demo("zhangshuai",21);
                        }
                }
原创粉丝点击