面向对象的三大特征(封装、继承、多态)

Java面向对象的体现是所有的声明必须放在一个类中,不允许在外面放东西。
面向对象设计的方法:根据现实问题直接抽象出对象,分析对象的行为和行为相关的数据,对象间通过传递消息进行通讯,从问题出发,模拟现实问题,建立系统模型,易于理解和实现。
结构化开发方法就是面向过程的方法:
1、采用自顶向下,逐步求精的程序设计方法
2、使用三种基本控制结构构造程序,任何程序都可以由顺序选择循环三种基本控制结构构造
3、详细描述处理过程常用的有数据流程图、数据字典、层次方框图、流程图、结构化语言等

一、封装
封装的好处:1、隐藏类的实现细节。2、迫使用户使用一个接口去访问数据。3、使代码更好的维护,可以扩展
高内聚:类的内部数据操作细节自己完成,不允许外部干涉
低耦合:仅暴露少量的方法给外部使用

二、继承
是父类与子类之间共享数据和方法的机制
通过继承,子类自动拥有父类的所有成员(父类的私有成员子类用不了)即继承了其父类不是private的成员变量作为自己的变量,并且继承了不是private的方法作为自己的方法,继承过来的访问权限不发生改变
如果不在一个包中,子类继承父类的protected和public成员变量和方法,友好的不被继承
父类的构造方法子类只能调用不能继承
super(实参列表)调用父类的构造方法
instanceof运算符是java独有的运算符,是双目运算符,其左面的操作元是对象,右面的操作元是类,当左面的是右面的创建的对象时,返回结果是true。否则为false
三、多态(重载和重写)
多态存在的三个条件:要有继承,要有方法的重写,父类引用指向子类对象
多态:不同的对象收到同一消息后可产生完全不同的效果
方法重载:一个类中出现方法名相同,形参列表不同(参数的个数不同,或者参数的类型不同)的多个方法。一个类中有多个构造方法就是重载的体现。
重写:1、这种现象存在于父子类中。2、子类中的方法、方法名、形参列表、返回值类型必须和父类方法一模一样。3、子类方法的权限不能比父类低。4、子类抛出的异常不能比父类多
重写的目的是:子类通过方法的重写可以隐藏继承的方法,子类通过方法的重写可以把父类的状态和行为改变为自己的状态和行为。

四、this关键字和super关键字
this关键字:表示某个对象,可以出现在实例方法和构造方法中,但是不可以出现在类方法中。
实例方法可以操作类的成员变量,当实例成员变量在实例方法中出现时,默认的格式是:this.成员变量当static成员变量在实例方法中出现时,默认格式是:类名.成员变量通常情况下都可以省略,但是当实例成员变量的名字和局部变量的名字相同时,成员变量前的this或者类名则不可以省略
注:this不能出现在类方法中,因为类方法可以通过类名直接调用,这时有可能还没有任何对象产生。
super关键字:在子类中想使用被子类隐藏的成员变量或者方法时就可以使用关键字super 比如super.x或者super.play()就是访问和调用被子类隐藏的成员变量x和方法play()。
只有当子类重写了父类的方法时,如果需要用到父类的方法时,才要用super,如果没有重写,不使用super就可以调用父类的方法。
构造函数中:任何类的第一句为super,你不加,编译器为你加,但是Object中没有
在继承时,子类会默认调用父类无参构造器,如果父类重载了构造器,且没有给出无参构造器,子类必须显示调用父类构造器,如果不调用,则会报错。
每个普通方法中,都有两个隐式参数,this和super,不用传,自带的。

五、成员变量和成员方法的修饰符的范围

修饰符 任何地方 子类中 同包中 本类中
public * * * *
protected * * *
没有修饰符 * *
private *

类的访问修饰符只可以用public或者没有修饰符
构造方法的修饰符一般为public或者private,public的可以new对象,private的需要自己准备对象

六、final关键字
final修饰的变量,值不能被改变
final修饰的方法不能被重写
final的类不能被继承

七、static关键字
1、static只能修饰成员变量或者成员方法,所有非静态都是对象相关的,所有静态是类相关的。
2、static的成员变量所有对象共享一份,非static的成员变量每个对象都有一份。
3、静态方法不可直接访问非static的成员变量或者方法
4、对象调用非static的方法,类调用static的方法

八、类被java虚拟机加载的步骤:
1、读取类的字节码文件
2、如果该类中有静态代码块,那么运行静态代码块

static{
}

3、类的静态变量和方法加载到方法区的静态区中
4、类的非静态方法加载到方法区中
5、生成一个类的对象到堆中

九、类
一个源文件可以写多个类,但最多只有一个public的,public类的类名必须与文件名相同,从软件设计的角度来说,一个源文件最好只写一个类,(单一职责原则)
类是抽象的,对象是具体的
类可以看做一类对象的模板,对象可以看做类的一个具体的实例

构造方法:(用来创建对象)
使用new空格构造方法来实例化
构造方法必须与类同名,并且没有返回值
一个类可以有多个构造方法(形参列表不同)
如果一个类中没有添加任何构造方法,编译器会自动添加无参构造

你可能感兴趣的:(java)