1、类与实例
对象是一个自包含的实体,用一组可识别的特性和行为来标识。
类就是具有相同的属性和功能的对象的抽象的集合。
2、实例化
实例,就是一个真实的对象。比如我们都是“人”
实例化就是创建对象的过程,使用new关键字来创建。
Cat cat = new Cat();将类Cat实例化 ,其实这几句代码做了两件事
Cat cat;声明一个Cat的对象,对象名为cat
cat = new Cat();将此cat对象实例化
3、构造方法
比如希望每个小猫一诞生就有姓名,那么就应该写一个有参数的构造方法。
构造方法,又叫构造函数,其实就是对类进行初始化。构造方法与类同名,无返回值,也不需要void,在new 时候调用。
所有类都有构造方法,如果你不编码则系统默认生成空的构造方法,若你有定义的构造方法,那么默认的构造方法就会失效了。
初始化:初始化就是把变量赋为默认值,把控件设为默认状态,把没准备的准备好。初始化在计算机编程领域中指为数据对象或变量赋初值的做法
4、方法重载
方法重载提供了创建同名的多个方法的能力,但这些方法需使用不同的参数类型。构造方法、普通方法都可以实现重载的。
方法重载时,两个方法必须要方法名相同,但参数类型或个数必须要有所不同。可在不改变原方法的基础上,新增功能
5、属性与修饰符
属性是一个方法或一对方法,但在调用它的代码看来,它是一个字段,即属性适合以字段的方式使用方法调用的场合。
属性有两个方法get和set。
字段是存储类要满足其设计所需要的数据,字段是与类相关的变量。
private String unit;//字段
public String getUnit() {//get属性
return unit;
}
public void setUnit(String unit) {//set属性
this.unit = unit;
}
public公有的,private私有的
通常字段都是private私有的,而属性都是public公有的
class Cat{
private int shouNum =3;//声明一个私有的字段,默认值是3
public int ShoutName{
get{//表示外界调用时可以得到shoutNum的值
return shoutNum;
}
set{//表示外界可以给内部shoutNum赋值,set访问器没有显示设置参数,但它有一个隐式参数,用关键字value表示
shoutNum = value;
}
}
}
Cat cat = new Cat();
cat.ShoutName = 5;//此时调用的是属性,value隐式参数=5
6、面向对象的特性
6.1、封装
每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作。
封装的好处:
第一、良好的封装能够减少耦合,第二、类内部的实现可以自由地修改,第三、类具有清晰的对外接口。
6.2、继承
在讲继承之前,先谈谈IS--A与 Has-a 区别:
IS--A基于类继承或接口实现,IS-A是表达这句话的一种方式:“这个东西是那个东西的一种”。例如:野马是一种马。(是一个)
HAS-A关系是基于用法(即引用)而不是继承。换句话说,如果类A中的代码具有对类B实例的引用,则“类A HAS-A类B”。例如:马有缰绳。(有一个)
“is-a”代表的是类之间的继承关系,比如PC机是计算机,工作站也是计算机。PC机和工作站是两种不同类型的计算机,但都继承了计算机的共同特性。因此在用Java语言实现时,应该将PC机和工作站定义成两种类,均继承计算机类。
“has -a”代表的是对象和它的成员的从属关系。同一种类的对象,通过它们的属性的不同值来区别。比如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux。操作系统是PC机的一个成员变量,根据这一成员变量的不同值,可以区分不同的PC机对象。
对象的继承代表了一种“is-a”的关系,如果两个对象A和B,可以描述为“B是A”,则表明B可以继承A。
继承者还可以理解为是对被继承者的特殊化,因为它除了具备被继承者的特性外,还具备自己独特的个性。
继承定义了类如何相互关联,共享特性。继承的工作方式是:定义父类和子类,或叫做基类和派生类,其中子类继承父类的所有特性。子类不但继承父类的所有特性,还可以定义新的特性。
如果子类继承与父类,第一、子类拥有父类非private私有的属性和功能;第二、子类具有自己的属性 和功能,即子类可以扩展父类没有的属性和功能;第三、子类还可以以自己的方式实现父类的功能(方法重写)。
父类中的构造方法不能被继承,只能被调用。
继承的优点:不用继承的话,如果要修改功能,就必须在所有重复的方法中修改,代码越多,出错可能就越大,而继承的优点是,继承使得所有子类公共的部分都放在了父类,使得代码得到了共享,这就避免了重复,另外,继承可以使得修改或扩展继承而来的实现都较为容易。
继承的缺点:那就是父类变,则子类不得不变。继承会破坏包装,父类实现细节暴露给子类。增大了两个类之间的耦合性,继承显然是一种类与类之间强耦合的关系。
6.3、多态
多态表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行。