最近开始着手整理自己学习的东西,把面向对象整理出来
什么是面向对象?
起初,“面向对象”是专指在程序设计中采用封装、继承、多态等设计方法。
面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。
什么是多态?
在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。
简而言之,将父类引用指向子类对象
什么是继承?
继承就是继承父类的属性和方法
优点:代码的可重用性;可以拓展父类的属性和方法;
什么是封装?
封装就是封装内部属性,只暴露出部分接口给使用者调用。保证了内部代码的完整性。
一般情况下,我们写好的代码要改动某个属性值的时候,最好是不要去改动源代码,而应该是去调用你一开始写好的方法去改动。所以这就是我理解的封装。
面向对象的优点?
1.容易维护
2.质量高
3.效率高
4.容易扩展
面向对象的缺点?
性能缺失
如果缺乏整体规划,容易导致结构部合理
如何在代码中体现?
package com.ehealth.obj; class cat{ public cat(){ System.out.println("This is a cat."); } public void call(){ System.out.println("...."); } } public class objTest { public static void main(String[] args) { cat c=new cat(); c.call(); } }
this关键字
指向当前对象
this还可以用于调用当前对象的其他构造函数。
static关键字
静态对象,在第一次创建对象的时候进行初始化。属于类的公共区域。
super关键字
在构造函数中使用super,意味着使用父类的构造函数。当没有显示调用的时候,意味着默认调用父类的无参构造函数。如果父类没有无参构造函数,那么将会出错。所有的类都继承与Object这一个类。
继承与权限
继承使用的是extends关键字
public:所有地方都可见
private:所有地方都不可见
protect :子类可见
default::同一个包可见
重载与重写
重载:方法名相同,参数不同
重写:方法名跟参数还有返回类型都必须一样。