_Java基础<四>_面向对象(上)
来源:互联网 发布:mysql可视化工具安装 编辑:程序博客网 时间:2024/06/06 16:44
面向对象(上)
一、面向对象的概念
在介绍面向对象的概念之前,先来了解一下面向过程的概念。因为面向对象是基于面向过程的。
面向过程强调的是过程行为,也就是方法行为,一个行为调用另外的一个行为;例如前面的编程就是面向过程的,面向过程是一种设计的思想,C语言就是面向过程思想的。
面向对象将功能封装到对象中,强调具备了功能的对象;当想要调用这个功能时,可以去找这个对象,然后用这个对象调用这个功能。
面向对象思想的举例:当我们想要更远隔千里的同学聊天,就会想到使用QQ,因为QQ具备聊天功能,调用了QQ的聊天功能就可以实现聊天功能,而并非自己造一个方法实现聊天功能。这时,QQ就是对象,对象中封装了功能,这就是面向对象的思想。
面向对象是一种符合现实生活的思想,它可以将复杂的事情简单化,让程序员从执行者变成了指挥者。但必须先找到具有所需功能的对象,然后调用该功能,当没有该对象时,就需要创造一个具有所需功能的对象。面向对象可以简化开发的步骤并且提高复用性。
面向对象的三个特征:封装,继承,多态。
二、类与对象的关系
类:在现实生活中,每一类事物都有自己的特征;在java中,可以通过类的形式来描述一类事物;类是具体事物的抽象。
对象:即某类事物实实在在的个体。
类与对象:对于同一类事物可以抽取它们的共性内容,定义在类中。例如:现实生活中的每一辆汽车都具有颜色和轮胎数,那么就可以把颜色和轮胎数抽取到汽车类中。
类具有属性和行为,属性也称为成员变量,行为也称为成员函数。
成员变量与局部变量的区别:
(1)、成员变量的作用范围是它所属的整个类;局部变量的作用范围是它所属的{}中,比如:函数内,for语句内。
(2)、成员变量在堆内存中;局部变量在栈内存中,会自动释放。
(3)、成员变量有默认初始化值,局部变量没有初始化值,使用之前必须初始化。
匿名对象:匿名对象是对象的简化形式,没有栈内存的引用指向它。
特点:匿名对象的方法只能调用一次;匿名对象可以作为实参传递给形参。
package itheima.day05;//类与对象的演示public class CarDemo {public static void main(String[] args) {//创建一个实实在在的对象,凡是new的实体都在堆内存中Car c = new Car();c.run();//匿名对象只可以使用一次new Car().run();//匿名对象作为实参传递show(new Car());}public static void show(Car c){c.num =3;c.color ="blue";c.run();}}//汽车类class Car{String color = "red";//颜色int num = 4;//轮胎数//汽车类的方法,也叫类的行为void run(){System.out.println("car run...."+color+","+num);}}
三、封装
封装:封装就是隐藏对象的属性和实现的细节,仅仅对外界提供公有访问方式。
封装的好处:将变化隔离,便于使用,提高重用性,提高安全性。
四、构造函数
构造函数:构造函数是一种特殊的函数,用于给对象的初始化;为了体现唯一性,构造函数必须与类型相同,并且没有返回值类型,也没有return语句。
注意:每一个类中都包含有构造函数,当没有手动写构造函数时,系统会提供一个默认的构造函数,默认的构造函数是无参的构造函数。一旦手动写了构造函数,那么系统就不再提供任何构造函数。如果需要,必须手动写上无参构造函数,否则编译通不过。多个构造函数以重载的形式存在。
构造代码块:形式:{构造代码块语句;},用于给全部对象进行初始化。对象一旦建立就运行代码块,并且优先于构造函数而运行。
构造函数与构造代码块区别:构造函数是给对应的对象进行初始化,构造代码块是给所有的对象进行统一初始化。
五、this关键字
this关键字:代表本对象的引用。
应用:
(1)、用于区别类的成员变量和局部变量;
(2)、用于构造函数之间的相互调用;只能放在构造函数的第一行。
(3)、用于成员函数内部要用到该函数所属的对象。
下面是用人的类与对象代码分析:
package itheima.day05;//演示人的对象public class PersonDemo {public static void main(String[] args) {//调用无参构造函数:这是默认构造函数:name =null,age0Person p1 = new Person();//调用有参构造函数Person p2 = new Person("zhangsan",24);Person p3 = new Person("lisi",23);//调用成员方法,说出自己的情况p2.speak();p3.speak();}}class Person{private int age;private String name;Person(String name,int age){//this关键字:用于区别成员变量和局部变量this.name = name;this.age = age;System.out.println("name ="+this.name +",age="+this.age);}Person(){System.out.println("这是默认构造函数:"+"name ="+name+",age"+age);}//成员函数,说出自己的情况public void speak(){System.out.println("我是"+name+",我今年"+age+"岁。");}}
六、static关键字
Static关键字:用于修饰成员变量或者成员函数。
调用方式:类名.静态成员
静态成员的特点:(1)、随着类的加载而加载,生命周期最长;
(2)、先于对象而被创建;
(3)、可以直接被类名调用。
注意:
(1)、静态的方法只能访问静态成员,因为静态方法优先于非静态成员存在;
(2)、静态方法中不能使用this,super等关键字。
静态的应用:作为工具类使用,可以将所有的方法都定义成为静态方式,并且是私有化构造函数,这时不能创建对象,只能用类名调用,java中的API的制作就是这个原理。
静态代码块:格式:static{执行语句;};
特点:用于给类的初始化,只执行一次。
七、单例设计模式
单例设计模式:一个类在内存中只有一个对象。
作用:用于多个程序共同使用同一个对象,比如:配置文件
设计单例的方式:
(1)、私有化构造函数;
(2)、在类中创建一个静态的本类对象;
(3)、向外提供一个能够获取本类对象的静态方法。
单例有两种方式:懒汉式,由于涉及到多线程知识,暂时不分析;
饿汉式:下面代码体现。
package itheima.day06;//演示饿汉式的单例模式public class SingleDemo {//单例模式就是为了保证内存中只有一个对象public static void main(String[] args){Single.getInstance();Single.getInstance();}}class Single{//1:私有化构造函数private Single(){System.out.println("单例模式111");}//2:在类中创建一个本类对象private static Single s =new Single();//3、向外界提供一个获取本类对象的方法public static Single getInstance(){return s;}}
- _Java基础<四>_面向对象(上)
- 黑马程序员_Java基础_面向对象(四)_08
- 传智播客_张孝祥_Java基础3_面向对象上_学习笔记
- 黑马程序员_Java基础_面向对象
- 黑马程序员_Java基础_面向对象
- 黑马程序员_Java基础_面向对象
- 黑马程序员_java基础_面向对象
- 程序员_Java基础<一>-面向对象上
- 黑马程序员_Java基础_面向对象(一)_05
- 黑马程序员_Java基础_面向对象(二)_06
- 黑马程序员_Java基础_面向对象(三)_07
- 黑马程序员_Java基础_面向对象(五)_09
- 黑马程序员_Java基础_面向对象(六)_10
- 黑马程序员_Java基础02_面向对象
- 黑马程序员_java基础_面向对象_02
- 黑马程序员_Java基础_面向对象_03
- 黑马程序员_java基础学习笔记04_面向对象
- JS基础加强四_面向对象
- 本集团最新移动平台策略
- trait,线性化
- FTP 回应码
- FTP 指令 与 参数变量
- FTP 最小实现
- _Java基础<四>_面向对象(上)
- c++虚析构函数
- lucene4.5源码分析系列:索引的创建过程
- LAMP初步搭建成功
- 验证码
- UNION ALL 的排序问题
- android 链接mysql数据库实例
- 周赛H你知道这个规律吗?
- POJ 1658等差等比数例