Java学习—面向对象
一.面向对象思想概述
面向对象是基于面向过程的编程思想,当需求单一,或者简单时,我们一步一步去操作是没问题的,效率也可以达到很高,但是随着需求的更改、功能的增多,发现需要面对每一个步骤都很繁琐,这时就需要进行思考,能不能把这些步骤和功能在进行封装,根据功能的不同,进行不同的封装,功能类似的封装在一起,这样结构逐渐清晰。使用时找到对应的类,这就是面向对象的思想概述。
面向过程:强调是每一个功能的步骤
面向对象:强调的是对象,然后由对象去调用功能
举例:
洗衣服:换下脏衣服---盛水---浸泡---手搓---漂清---晾干
全自动洗衣机------------一键洗衣 烘干
二.面向对象的基本特征
封装(encapsulation)
把数据和函数包装在一个单独的单元(称为类)的行为称为封装
在一个对象内部,某些代码和某些数据可以是私有的,不能被外界访问,通过这种方式,对象内部数据提供了不同级别的保护,以防止程序中无关的部分意外改变或错误使用了对象的私有部分
继承(inheritance)
是可以让某个类型的对象获得另一个类型对象的属性的方法
- 分类原则:每一个子类都具有父类的公共特性
- 注意:每个子类只定义这个类所有的特性。而如果没有按级分类,每类都必须显式地定义它所有的特性
多态(polymorphism)
意思是事物具有不同形式的能力
- 一个接口,多个实现
三.类的对象及其应用
- 类:是一组相关的属性和行为的集合
- 对象:是该类事物的具体体现
举例:
类 学生
对象 班长就是一个对象
- 属性:就是该事物的描述信息
- 行为:就是该事物能够做什么
- 事物和类的关系:
事物 类
属性----------------成员变量
行为----------------成员方法 - 定义类就是定义类的成员
成员变量:和以前定义变量是一样的,位置发生了变化。(在类中,方法外)
成员方法:和以前定义方法是一样的,只不过去掉static - 一个类的标准构成:成员变量 ,构造方法,成员方法。
类的全限定名:包名+类名 org.westos.demo3.Student
类就相当于一个模板,可以创建多个对象,对象的定义格式如下:
类名 对象名 =new 类名();
举例:
Student wangYun=new Student
在Java语言中,如果要访问类中的属性或方法,则可以依靠下列的语法格式:
访问中的属性:对象.属性;
调用类中的方法:对象.方法;
-
要使用一个类,必须要对类进行实例化,所谓实例化,就是创建该类对象
-
然后创建可以使用关键字new
-
引用数据类型:数组,类
-
就可以使用对象,调用功能和属性
-
类必须编写在.java文件中
-
一个.java文件中,可以存在无数个类,但只能存在一个public修饰的类名完全一致
-
每个对象都有自己的一份实例变量
匿名对象 -
没有名字的对象
-
每new一次都是新的对象
-
匿名函数可以调用属性和方法,可以作为参数传递,但是无法在传参之前做其他的操作
-
当你以后看到一个方法的形参要一个类 类型,你就传一个该类的对象
new Phone();
在Java中一般不这样使用,因为由于对该对象没有进行引用,马上会被内存回收,所以并无意义
public class MyTest {
public static void main(String[] args) {
Phone phone = new Phone();
String name = phone.name;
System.out.println(name);
System.out.println(phone.price);
phone.call("张三");
phone.call("李四");
new Phone(); //一个新对象
String name1 = new Phone().name; //一个新对象
double price = new Phone().price; //一个新对象
System.out.println(name1);
System.out.println(price)