(一).类和对象
面向对象
世间万物皆为对象:动态属性、静态属性
什么是类?
面向对象编程设计的特征:
封装:
在抽象中将属性与方法写在一个类中就是封装,而封装就是为了保证抽象出来的特征和方法的安全性,封装就是包装的过程,注意封装不是绝对的封装,如果其他程序要获取已经封装好的数据,就要通过程序指定的接口或方法才能获取。
继承:
特点:
继承要有一定的层次结构,还要具备一定的可传递性。
子类继承父类的属性和方法,但是私有属性和构造方法除外。
子类除了拥有从父类继承过来的属性和方法外,子类还可以拥有属于自己的属性和方法。
在java中只支持单一继承(也就说一个子类只能有一个父类,但一个父类可以有多个子类)。
判断两个类的继承关系是否成立,可以通过“is-a”判断。
子类不能继承父类的构造方法:构造方法是构造一个对象时必须调用的方法,名字也是和类名相同的。显然,子类不能继承父类的构造方法。
继承的特点:提高代码的重要性。
多态:
多态就是指同一种事物在不同的情况下的多种表现形式。
多态的表现形式有:方法重写,方法重载,接口和接口的继承,类和类的继承
![](https://i-blog.csdnimg.cn/blog_migrate/0fe9c0c4401248e73e39d82eaa8cd64b.png)
类的构造方法
在类中,除成员方法外,还存在一种特殊类型的方法,那就是构造方法,构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的,当类实例化一个对象时,类都会自动调用构造方法。
![](https://i-blog.csdnimg.cn/blog_migrate/5f783abad7c6077c70d36e578c5808a1.png)
局部变量
如果在一个成员方法里定义一个变量,那么这个变量就称为局部变量,局部变量是在方法被执行时创建,在方法执行结束时销毁,局部变量在使用时必须进行赋值操作或被初始化,否则出现编译错误。
![](https://i-blog.csdnimg.cn/blog_migrate/fedcf41ce48056cedd61dbdd02ba3386.png)
静态变量和静态方法
在介绍静态变量和静态方法前,首先需要介绍static关键字,因为由static修饰的变量和方法称为静态变量和静态方法。
主方法具有以下特性:
主方法是静态的,所以如果要直接在主方法中调用其他方法,则该方法必须也是静态的
主方法没有返回值
主方法的形参为数组,其中,args[0]~args[n]分别代表程序的第一个参数到第n个参数,可以使用args.length获取参数的个数
![](https://i-blog.csdnimg.cn/blog_migrate/079cc099b4d6fcfa5a2f90cdb84a0073.png)
![](https://i-blog.csdnimg.cn/blog_migrate/af0cf40ea2fa941deac733a488f9ad6c.png)
(一)使用instanceof关键字判断对象类型
当程序向下转型的时候,如果父类对象不是子类对象的实例,就会发生ClassCastException异常,所以在执行向下转型之前需要养成一个良好的习惯,就是判断父类对象是否被子类对象的实例。这个判断通常使用instanceof关键字来完成,可以使用instanceof关键字是否判断是否一个类实现了某个接口,也可以用它来判断一个实例对象是否属于一个类。
![](https://i-blog.csdnimg.cn/blog_migrate/9f36289de00e2ea8d7562be3a340e9d0.png)
方法的重载
由于这些构造方法都需要根据类名进行命名,为了让方法相同而形参不相同的构造方法同时存在,必须用到方法重载。
方法的重载就是在同一个类中允许存在一个以上同名的方法,只要这些参数,只要这些方法的参数个数或类型不同即可。
![](https://i-blog.csdnimg.cn/blog_migrate/b69fe411fc4a2da0b9c77e53bebc1c56.png)