黑马程序员---面向对象概述

来源:互联网 发布:崔永元 我的抗战 知乎 编辑:程序博客网 时间:2024/05/22 12:59

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

面向对象学习总结:
1.面向对象是对面向过程设计的改进,它将一组在逻辑上有联系的方法和属性进行封装,方便了程序员对方法的记忆,同时提供了对方法和属性的权限控制,使程序员可以根据需要,把需要展现的方法或属性展现给调用者,不需要让调用者使用的方法进行隐藏,这样便于旧代码的维护。
2。面向对象的程序设计是通过类来实现的,对象是现实世界中一个个可以被描述的事物,而类则是对现实世界中事物特征的抽象描述,通过对类的属性进行赋值,就是对现实世界事物的具体描述。
3.在现实世界中,事物与事物之间既有相似的地方,又有自己独特的地方,即:事物之间既有共性,又有个性,这在面向对象设计语言中是通过继承和多态来表示的,通过继承,可以把那些共性的地方抽取出来,做成他们的基类,这样当一个类需要拥有某些共性的特征时,只需要继承那些基类就行了,同时,对于一些共性的东西,不同的子类还可以有自己特有的表现方式,这是通过多态来实现的,比如说:所有的动物都会叫,这是他们的共性,但是不同的动物的叫声是不同的,这是他们的个性,而我们不用关心他们的个性,只需要知道他们的共性就行了,这样,当我们调用他们的共性方法时,不同的子类会根据自己的特征表现出各自的特性。

4.当一个事物需要不止一个基类的共性特征时,因Java是单根继承体系的,也就是说,一个Java类只能有一个直接父类,那么这个时候该怎么办呢?Java是通过可以实现多个接口来弥补的,虽然Java只能有一个直接父类,但是可以实现多个接口,因此当一个Java类需要同时拥有多个类的特征时,可以把那些特征放在接口中,然后再让这个Java类去实现那些接口就行了。创建接口通过interface关键字来实现,接口中不能有方法体,只能有方法声明,接口中的方法都是public访问权限的,其他的权限修饰符在接口中没有意义,接口也可以继承接口,而且接口支持多继承,接口中也可以定义类变量。

5.在Java中不是所有的类都能被实例化的,比如有的工具类,构造方法被私有化了,并且没有提供获取实例的方法,像这样的类,通过普通的new是new不出来的,但是通过反射,还是可以创建出实例的,而Java中的抽象类,无论怎样都是不能创建实例的,正如它的名字所暗示的那样,他是抽象的,他并不能完整的描述出一个事物,创建它的实例是没有任何意义的,在Java中创建抽象类是通过abstract关键字来实现的,抽象类可以没有一个抽象方法,也可以全部都是抽象方法,就算没有一个抽象方法,它仍然是抽象的,仍然是不可new的。

6,.有时候我们可能不希望别人来继承我们的类,这个时候可以将我们的类定义为final类,就是最终类,这样别人就无法继承我们的类了。

7.向上转型和向下转型:向上转型总是安全的向下转型总是不安全的,因为向上转型总是安全的,所以在需要向上转型的地方我们无需强制类型转换,直接把子类当成父类来使用就行了,编译器会帮我们做好向上类型转换,而向下类型转换总是不安全的,所有在需要向下类型转换的地方,编译器无法帮我们进行类型转换,这需要我们进行强制类型转换,可能会产生ClassCastException异常。

8.关于多态:多态具体体现在通过父类引用可以调用子类中对应的方法,比如父类中有一个eat()方法,子类继承了父类并重写了父类中的eat()方法,那么通过父类引用来调用eat()方法时,结果是子类中对应的eat方法被调用。

9.方法重写和方法重载的区别,方法重写是对继承而言的,指的是子类将父类中对应的方法进行了重新的方法定义,多态的表现也是通过对父类方法的重写来体现的,在子类对

父类中的方法进行重写时方法签名必须与父类中的一致,也就是说方法名称,参数类型,返回值类型,权限修饰符都必须和父类中一致。而方法重载是指几个方法的方法名称相同,而方法的参数类型或参数个数不同,被重载的方法参数必须是不同的,参数类型不同或个数不同,不能根据返回值不同来重载方法,因为仅根据返回值不同无法定位到具体的方法。

10.内部类:Java中可以在一个类中定义类,被定义在类中的类称为内部类,内部类是被当作外部类的成员变量的,内部类有外部类完全的访问权限,能访问外部类共有和私有的方法和属性,内部类也可以继承其他的父类或实现其他的接口,内部类弥补了Java单根继续的不足,当一个外部类需要同时获得多个类的特征,而这些类又不是接口时,可以在外部类中定义多个内部类,每个内部类继承一个特定的父类,这样,通过操作这些内部类,等价于外部类同时继承了多个父类。当要在外部类以外创建外部类中的内部类时,首先必须要求被创建的内部类外部可见,也就是说这个被创建的内部类必须是public的,然后通过new 外部类.new 内部类 的方式创建内部类,内部类是依赖于外部类的,所以创建内部类时必须有外部类的引用。

11.匿名内部类:匿名内部类,顾名思义,就是没有名字的内部类,它也是内部类,之所以没有名字,是因为匿名内部类通常被当作返回值或函数实数来使用的,使用他们通常是用父类的引用来使用的,也就是说,在使用匿名内部类时都做了向上转型,把它当成它的父类来使用。

以下是关于面向对象的一些示例:

1.创建一个简单类:

2.创建一个父类,用子类继承它并重写父类中的方法:

3.创建简单接口:
4.创建一个类,去实现多个接口中的方法
5.向上转型和向下转型:
6.创建内部类,在内部类中访问外部类中的私有方法:
7.匿名内部类的一般用途:
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

详细请查看:www.itheima.com

0 0
原创粉丝点击