第三篇 (面向对象)①: 关于Java的面向对象特性
来源:互联网 发布:大数据 应用 编辑:程序博客网 时间:2024/06/07 01:10
Java是面向对象设计语言,那么什么是面向对象设计语言呢,很多人都对这个概念很模糊。
对象的概念:
我们都知道现实世界中我们看到的一个个事物都是实实在在存在的对象,例如路上停靠的汽车,张三,李四在行走,一个超市,一只狗等等,对象就是将抽象的事物和思想变成实体,而面向对象思想也同样如此,我们解决不同的问题使用不同的对象,只考虑用什么对象,怎么使用这个对象解决这个问题,而不去考虑解决这个问题的过程,这就是面向对象的思想(这是我的个人理解).
那么在Java中什么是对象呢,对象首先跟类是紧密联系在一起的,类是抽象的概念,我们把类实例化就成了对象。
比如: class person {
}
我们创建一个类 那么实例化它就使用new关键字 new person();这就是这个类的一个对象实例,一个对象实例空间是有地址的,我们可以创建一个类类型的变量引用指向它
person p=new person(); 我们创建了一个p指向这个对象的地址,这样我们直接使用p.成员变量 或p.成员方法就是调用这个类中的成员变量或成员方法.如果不创建一个p变量指向对象,直接使用new person();这个就是匿名类对象,比如new person().成员变量 new person().成员方法,要知道每当使用new创建一个对象,都会在内存中又开辟出一片新的空间存在这个类中数据,所以不同的new person()的地址是不一样的,匿名对象适用于只使用一次,如果多次需要使用类中数据就不适合用匿名类对象.
类的封装:
为了保证程序的隐蔽性和安全性,类中的有些数据我不希望类的外部可以访问或者操作它,我希望能把它隐藏起来只能在自己类的内部使用,这时候就要使用private修饰符,
例如: class person {
prviate String name;
private sex;
}
这个时候只能在自己内中操作性别name和名字sex ,类的外面是访问不到的,还有2个修饰符:protect 这个修饰符只有自己类和自己类中的子类可以访问,其他的类没有权限访问,public权限比较大所有的类都可以访问。
构造函数:
什么是构造函数呢,Java规定一个方法具有和自己的类一模一样的名字(包括大小写),并且函数前没有返回值修饰符,这样的方法我们称为构造方法,构造方法可以自己创建,可以具有参数,如果忘了创建,系统会自动创建一个空的构造方法,构造方法会在创建对象实例的时候自动由虚拟机调用,熟练使用构造方法也是学好Java的必要课程.
举个例子:class person {
prviate String name;
private sex;
private void person(){ }
} 这个就不是构造方法,因为有了返回值前面有个void,代码里会有隐藏的return; 构造方法的默认返回值是当前对象 。
关于构造代码块:
构造代码块在类中以{ }标记,算是一个类成员,不算方法,因为方法有方法名.还有静态构造代码块,{}前面用static修饰,构造代码块会在创建对象时执行,静态构造代码块会随着类的加载而执行,因为成员变量随着对象的创建而进行初始化,静态变量随着类的加载而初始化并且只初始化一次.
举例:class person {
static {
System.ou.println("这是静态构造代码块!");
}
{
System.ou.println("这是构造代码块!");
}
private person(){ "这是构造方法!" }
} 当主方法直接执行的时候会输出: 这是静态构造代码块! 当我们在主方法中创建一个对象person p=new person();时会输出:
这是静态构造代码块!
这是构造代码块!
这是构造方法!
还有一点,子类进创建对象时,默认的有个super.父类名(); 这是隐藏的,父类的构造方法会提前初始化执行!
关于this的用法:
Java为每个类都创建了一个隐藏的对象,这个隐藏的对象名就是this,如果我们不想创建对象就是用类中的成员,可以用到this,比如:
class person {
String name="张三";
char sex='男';
} 我们使用的时候只要this,name或者this.sex就可以使用这个类中的成员变量.
static修饰符和类中单例设计模式:
static是全局静态修饰符,static修饰的成员生命周期随着类的加载而加载随着类的消失而消失,类只有当整个程序运行结束后消失,所以static修饰的成员会在整个程序结束后消失,生命周期非常的长啊~~,我们看一下static的用法.
关于单例设计模式,如果有一个类我不希望别人创建很多对象造成内存空间占用,我想自己在类的内部创建一个对象给类的外面调用,并且我不希望类的外面可以创建新的对象,这种思想就是单例设计模式.
例子代码:
class person{
private person(){ }
private person p=new person();
static public getTarget(){
return p;
}
} 我们使用person.getTarget()获得这个类的对象我们无法创建它。
- 第三篇 (面向对象)①: 关于Java的面向对象特性
- 关于java基础--面向对象的特性
- Java的面向对象特性
- Java的面向对象特性
- Java的面向对象特性
- java面向对象的特性
- JAVA的面向对象特性
- 第三篇 (面向对象)②: 关于Java中对象的向上和向下转型
- Java面向对象特性
- Java面向对象特性
- Java面向对象特性
- Java面向对象特性
- Java面向对象特性
- JAVA面向对象特性
- 面向对象的特性
- 面向对象的特性
- 面向对象的特性
- 面向对象的特性
- Objective-C学习笔记十:继承二
- mongoDB 3.0安全权限访问控制
- MFC友好信息提示类
- spring jdbc的使用
- 激活硬盘被关闭的DMA模式
- 第三篇 (面向对象)①: 关于Java的面向对象特性
- Objective-C学习笔记11:多态和动态类型
- iOS 设置导航栏 Navigationbar相关信息
- 我自己的
- 欢迎使用CSDN-markdown编辑器
- mysql 自增字段的设置
- WIN7 64位安装jdk,javac出错
- Go并发编程基础(译)
- 添加用户到sudoers