一基本特征
面向对象的基本特征有三个:封装性,继承性,多态性
- 封装性 封装是一种信息隐藏技术,封装使数据和加工数据的函数封装成一个整体,使用户只看到对象的外特性,目的在于把对象的设计者和对象的使用者区别开来。
- 继承性 继承就是子类和父类可以共享数据,子类可以直接继承父类的全部描述,并且可以加以修改和补充,继承分为单继承和多继承。
- 多态性
对象根据接受到的消息做出的不同的动作。不同对象对接收到的同一消息可以产生不同的动作。
二、面向对象和面向过程的区别
- 面向过程编程试讲程序一步一步分解,并且按照一定的顺序执行,环环相扣,最大的缺点就是,如果需求发生了改变,需要改动的太多了。
- 面向对象编程的使用是要先定义一个类然后用该类型下的“对象”组装程序,对象之间通过‘消息传递’。最大的缺点是:执行效率过低。
二、基本概念
类
类是具有相同属性及相同动作的一组对象。
类的声明
- 语法
[标识符] class 类名称{
//类成员变量
//类的方法
}
- 类的控制符
Java的访问权限主要有四个
- 1、默认模式(default) 默认模式下,不需要为某个类,方法等不加任何访问修饰符。这类方式声明的方法和类,只允许在同一个包(package)内是可 以访问的。
- 2、private(私有) 被声明为“私有”访问,那么他只能在当前声明它的类里面访问,类和接口的访问方式是不能被声明为私有的
- 3、public(公有) Java中岁访问权限控制最宽松的修饰符。如果一个方法、变量、和构造方法和接口被定义为“公共”访问,那么它不仅可以跨类访问,而且允许跨包访问。如果要访问的其它包里有公共成员,则需要倒包。
- 4、protected(受保护的)如果一个变量、方法、和构造方法在父类中被声明为"保护"访问类型,只能被类本身及其子类访问,即使子类在不同的包也可以被访问。
注:final类不能被继承。
- 类的定义
[标识符] class 类名称{
数据类型 属性;
类名称 (参数,...)
}
返回值的数据类型 方法名称(参数1,参数2,...)
{
程序语句;
return表达式;
}
}
注:static修饰的成员不能访问没有stati修饰的成员。
- 类的属性
定义属性的语法:
[修饰符]属性类型 属性名[=默认值]
对象
对象是类的实例化产物。但是对象可以定义不同的属性。
- 对象的声明
语法:
类名 对象名 = new 类名();
步骤:
- 1、声明指向“由类所创建的对象”的变量。
- 2、利用new创建新的对象,并指派给先前所创建的变量。
举例:
Person p = new Person();
- 对象的使用
语法:
对象名称.属性名 //访问属性
语法名称.方法名 //访问方法
- 匿名对象
对一个实例化的操作来讲,对象真正有用的部分是在堆内存里面,栈内存只保存了一个对象的引用名称。所以所谓的匿名对象是指,只开辟堆内存空间,而没有栈内存指向的对象
匿名特点:
- 1、匿名对象是没有被其他对象所引用
- 2、由于匿名对象没有栈内存指向,所以其只能使用一次,时候就变成无法寻找的垃圾
- 对象的比较
- 1、“ == ”运算符
“==”运算符是比较两个对象的内存地址值(引用值)是否相等 - 2、利用“equals()”方法
equals()方法用于比较两个对象的内容是否一致
例:
String str1 = new String("java");
String str2 = new String("java");
str1和str2完全相等,如果用“==”运算符比较,那就是不相等的,因为分别是用new实例化了两个String类型。如果是用“equals()”方法比较那他们就是想等的。