面向对象(OOP)一
2017-10-23 本文已影响0人
小焕哥
@小焕哥
面向对象的基本特性
- 万物皆为对象。
将对象视为奇特的变量,它可以储存数据,除此之外你还可以要求它在自身上执行操作。理论上将,你可以抽取待求解问题的任何概念化为构件,将其表示为程序中的对象。
- 程序是对象的集合,它们通过发送信息来告知彼此要做的。
想要请求一个对象就必须对该对象发送一条信息。更具体的说。可以把消息想象为对某个特定对象的调用请求。
- 每个对象都有自己的由其他对象所构成的储存。
可以通过创建包含现有对象的包的方式来创建新类型的对象。
- 每个对象都拥有其类型。
每个对象都是某个“类”的一个实例,每个类最重要的区别于其它类的特性就是“可以发送什么样的数据给它”。
- 某一特定类型的所有对象都可以接收同样的消息。
方法的重载
在日常生活中,相同的词可以表达不同的含义————它们被“重载”了。
- 方法的重载发生在一个类中,方法名称相同,参数列表不同。
class Bird {//编译器会根据传入的参数自动选择合适的方法 Bird(int i){} Bird(double b){} } //注意:当重载涉及到数据类型大小转换时,会自动由小到大提升,而由大到小必须事先强转
- 当没有构造器时编译器会自动创建一个默认的构造器,但当类中已经定义了一个构造器,则编译器不会自动创建默认构造器。
class Bird2{ Bird2(int i){} Bird2(double b){} } public class Tree{ public static void main(String[] args){ Bird2 p=new Bird2();//报错,构造函数未定义 Bird2 p1=new Bird2(); Bird2 p2=new Bird2(); } }
构造方法
- 构造方法的方法名必须与类名一致。
- 构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
- 构造方法的作用是完成对象的初始化工作,他能够把定义对象时的参数传递给对象的域。
- 构造方法不能由编程人员调用,而要系统调用。
- 构造方法可以重载,以参数的个数,类型,或排序顺序区分。
public class Car{ String color; String brand; public Car(){//构造 brand="奥迪"; color="黑色"; } }
构造函数的重载参见上个知识点
this的用法
- this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。this 的使用方法与其他对象引用一样,但要注意在方法内部调用同一个类的另一个方法就不必使用this
public class Apricot{ void pick(){} void pit(){ pick();//这里不用使用this } }
- 只有当需要明确指出对当前对象的引用时,才需要使用this关键字
- 区分类中参数名称相同时使用的变量
public class Book {
private String title;
private String author;
private double price;
public Book(String title,String author,double price) {
this.title=title;
this.author=author;
this.price=price;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public double getPrice() {
return price;
}
}
未完待续.............