一、类
什么是类
类其实是个模板,是一个具有共同特点的集合。比如说 饮料:都有包装,都有颜色,都有味道,都是被喝的东西。 这些都行都是抽象出来的属性和行为。
类的构成
类是由抽象出的属性和行为组成的对一种实物的描述, 实物的属性是类的成员变量,实物的行为是类的方法。
二、java类和对象的概念
类的概念
类的实质是一种数据类型,类似于int、char等基本类型,不同的是它是一种复杂的数据类型。因为它的本质是类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。
对象的概念
现实世界中任何物体都能被当作是对象,不过在正常开发的时候通常只是在一定的范围去考虑和认识与系统相关的事物并用系统中对象抽象的表示他们
对象和类的关系
类是物体属性和行为的模板
对象是物体的具体实现
三、创建和引用对象
使用对象的步骤 创建对象
类名 对象名 = new 类名();
引用对象成员:使用“.“进行以下操作 引用类的属性:对象名.属性 引用类的方法:对象名.方法名()
四、封装
封装的概念
在面向对象程式设计方法中,封装是指一种将抽象性函数式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装的作用
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点
一、减少耦合
良好的封装能够减少耦合,提高系统独立性
二、可重用性
封装重复代码,提高软件的可重用性
三、精确控制
可以对成员变量进行更精确的控制
四、安全性
隐藏信息,实现细节,降低了构建大型系统的风险
实现封装的步骤
一、修改属性的可见性来限制对属性的访问
二、对每个值属性提供对外访问的方法 创建一对取赋值方法
五、修饰符
六、继承
继承的概念
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承的作用
子类拥有父类的属性和方法,减少重复的代码,维护性高。
代码简洁,提高了代码的复用性。
继承的关键字
class——定义类
interface——定义接口
extends——继承父类
implements——实现接口
继承的特性
子类拥有父类非 private 的属性、方法
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
子类可以用自己的方式实现父类的方法
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)
Java 的继承是单继承,但是可以多代继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性
extends关键词
在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类
继承的优点
提高代码的复用性
提高代码的可维护性
提高类和类之间的关联性,为多态做基础
六、抽象
抽象的概念
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象的特性
抽象类不能被实例化
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用
在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口
抽象方法和普通方法
抽象方法无方法体
普通方法有方法体
抽象类:abstract
七、重写
方法重写的概念:
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
子类能够根据需要实现父类的方法。
重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。
方法重写和重载之间的区别
( 1 )方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载
( 2 )方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写。
( 3 )方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
八、接口
接口的概念
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
关键词:interface
接口的继承
一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法
总结:java中的接口
属性全都是全局静态常量
方法都是全局抽象方法
无构造方法
一个类可以实现多个接口,非抽象类实现接口时必须实现接口中的全部方法 抽象类利于代码复用,接口利于代码维护