面向对象
1.什么是面向对象?我们可以不要面向对象吗,学面向对象的好处是什么?
- 生活中的都是对象,在还没有学习面向对象时,就可以解决碰到的所有问题,java中有变量,有常量,可以解决复杂问题,只是解决问题的过程的较为复杂。例如定义一个学生,你可以定义一个类来解决,也可以定义多个变量,和多个方法解决。
- 学完面向对象就知道抽象,封装,继承,多态,数据的修改只涉及对类里的操作(封装),可重用性强(继承),可维护性好,维护成本低,可能在刚刚学完的人觉得成本也没有多低,但在企业中,做项目时这个成本,和维护性就显而易见。面向对象程序设计方法实际上是用我们习惯的人的思维方式去思考和设计,其实是返璞归真,理解起来也不会很难。
2.类与对象
什么是引用?构造函数与普通的初始化函数相比的好处在哪里?
- 例如Point point =new Point()的含义是实例化一个对象(new Point());然后定义一个引用point去指向这个实例的地址。如果学了c或者c++的,应该知道指针的概念,和引用是同一个方法。下面给出代码。
public class Point1 {
private int x;
private int y;
public Point1(){
}
public Point1(int x, int y) {
this.x = x;
this.y = y;
}
public static void main(String[] args) {
Point1 p1 =new Point1(3,4);
System.out.println(""+p1);
Point1 p2 =new Point1(1,2);
System.out.println(""+p2);
Point1 p3;
p3=p2;//将p3指向p2
p2=p1;//p2指向p3
System.out.println(""+p2);
System.out.println(""+p3);
}
}
输出结果是
Point1@1b28cdfa
Point1@eed1f14
Point1@1b28cdfa
Point1@eed1f14
输出的p3等于之前的输出p2的值2
- 构造函数对比普通的初始化函数好在一个,自动调用,无需程序员写代码调用这个方法。
3.继承与多态
为什么需要继承?
- 在自然界中存在着许多的继承,我们不想要重复做相同的事情,所以希望能够将已有的对象直接拿过来复用(继承的好处)。多态就是将同一个信息发给不同的对象,不同对象所相应的方法是不同的,而用多态则是以不变应万变的方法
4.抽象类与接口
为什么需要抽象类?,接口的好处是什么?什么时候用匿名内部类?
- 举个例子动物有叫的方法,但是不知道动物的具体叫无法描述,猫有猫叫,狗有狗叫。抽象类是去完成上层规划,不去考虑细节,细节由子代去实现。
- 接口是指其中方法都是抽象方法,只有定义,没有实现。接口就起到了统一规划的目的,他的实现者(继承者)必须要实现它规划好的方法,不能更改。这样就增加了类的一致性,便于使用和维护。这个好处在读者进行大项目时能够深深地体会到。
- 如果这个对象我们仅仅就使用一次,如果按照常规的方法过于麻烦,这个时候就可以使用匿名内部类
5.泛类
为什么需要泛类
- 举个例子,我们实现了一个整型堆栈,这就意味着,这个堆栈只能存储整型数据. 如果存储float数据的话我们需要重新再定义一个堆栈,代码基本相同,只是数据类型成了浮点型(float),这个时候就需要泛类使用泛类可以一劳永逸,只是要小小的改动,就可以通用了。
PS:
个人认为在学面向对象这块知识时,最重要的是类与对象,个人在类与对象花了较多的时间去理解它的本质
以上是个人的理解,如果有错误,请私聊我,感激不尽!!!