好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

一丶封装 1 权限修饰符

可以用来修饰成员变量和成员方法,对于类的权限修饰只可以用public和缺省default。

被public修饰的类可以在任意地方被访问;default类只可以被同一个包内部的类访问。

权限由大到小:public protected default(不写) private 被private修饰的成员只能在本类中访问,外界不能访问

2 set()/get()方法 (1)this关键字

a.可以用来调用变量,方法,构造方法; b.this.xx 理解为调用当前类的xx。 (2)成员变量和局部变量 1)在类中的位置不同 a:成员变量:在类中,方法外

b:局部变量:在方法声明上(形式参数),或者是在方法定义中

2)在内存中的位置不同 a:成员变量:在堆内存 b:局部变量:在栈内存 3)生命周期不同

a:成员变量:随着对象的创建而存在,随着对象的消失而消失 b:局部变量:随着方法调用而存在,随着方法的调用结束而消失 4)初始化值不同 a:成员变量:有默认值

b:局部变量:必须初始化值,否则报错!(在使用它之前,没有初始化) (3)set()/get()方法

当成员变量被private修饰时,不在本类中无法直接访问,便需要set()/get()方法来解决这个问题

3 封装性

封装:是面向对象的第一大特性,所谓封装,就是值对外部不可见(一般而言被private修饰),外部只能通过对象提供的接口(如set()/get()方法)来访问。 封装的好处:a.良好的封装能够减少耦合;

b.类内部的结构可以自己修改,对外部影响不大;

c.可以对成员进行更精准的控制(防止出现与事实不符的情况); d.影藏实现细节。

注意:在开发中,类的成员变量全部要进行封装,封装之后通过set()/get()方法访问。

二丶继承extends

1 实现:通过 class Zi extends Fu{} 实现类的继承

(1)子类继承父类,父类中声明的属性,方法,子类都可以获取到;

当父类中有私有的属性方法时,子类同样可以获取到,由于封装性的设计,使得子类不能直接调用访问。

(2)子类除了可以继承父类的结构外,还可以定义直接特有的成员变量,成员方法; (3)Java中类的继承只支持单继承,一个类只能继承一个父类,父类可以有多个子类,但是可以多层继承;

(4)子类不能继承父类的构造方法,可以间接的通过super关键字去访问父类的构造方法(super(););

在子类的构造方法中如果没有显示的调用父类的构造方法,会默认调用父类的无参构造(所以最好父类都写有无参构造方法)。

子类继承父类的访问特点:首先父类进行初始化,然后子类进行初始化;多层访问! 2 方法的重写(区别重载)

子类继承父类以后,若父类的方法对子类不适用,那么子类可以对父类方法重写(override)

规则:1)要求子类方法的 返回值类型 方法名(参数列表) 与父类方法一致; 2)子类方法的权限修饰符不能小于父类方法的修饰权限; 3)若父类方法抛异常,那么子类方法抛的异常类型不能大于父类;

注意: a.当子类重写了父类的方法以后,可以用 super.方法 调用父类被重写的内容;

b.子父类的方法必须同为static或同为非static。 class Fu{ private int i;

public Fu(){ //无参构造 super();可以省略 super(); }

public Fu(int i){ //有参构造

super(); this.i = i; }

public void seti(int i){ this.i = i; }

public int geti(){ return i; }

public void show(){

System.out.println(\这是父类\ } }

class Zi extends Fu{ public Zi(){ //无参构造 super(); }

public Zi(int i){ //有参构造,这块的super就不能省略 super(i); }

@Override //重写了父类中的show()方法 public void show(){

System.out.println(\这是子类\ } }

public class Test{

public static void main(String[]ages){ Zi z = new Zi();

z.seti(10); //Zi z = new zi(10); System.out.println(z.geti()); //10 z.show(); //这是子类 } }

3 super关键字

this与super区别: this:代表的是当前类的对象 super:代表的是父类的引用 应用场景: 成员变量

this.成员变量: 访问当前类中的成员变量 super.成员变量: 访问的是父类中的成员变量 构造方法

在构造器内部, super();/this()必须声明在首行,且只能出现一个。 this(); 访问的是本类中构造方法 super(); 访问的是父类中的无参构造 成员方法

this.成员方法; 访问的是本类的成员方法 super.成员方法; 访问的就是父类中的成员方法 4 继承性

优点: a:提高代码复用性 b:提高代码维护性

c:让类与类产生了一种关系,它是多态的前提!(产生的这种关系也是一种弊端,java中开发原则:低耦合,高内聚) 三丶多态(主要子类对象的多态性) 1 多态的前提条件: 1)必须有继承关系;

2)继承一个类的同时,子类中必须有方法重写(使用子类中的方法去覆盖父类中的方法);

3)父类的引用指向子类对象。(向上转型)

向上转型:父类引用指向堆内存的子类的对象; Fu f = new Zi(); 向下转型:将父类的引用强制转换为子类对象; Zi z = (Zi)f; 2 多态中的成员访问特点: (左指的父类,右指的子类) 成员变量:

编译看左,运行看左 非静态成员方法:

编译看左,运行看右(子类中的方法会覆盖掉父类中的方法)

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

一丶封装1权限修饰符可以用来修饰成员变量和成员方法,对于类的权限修饰只可以用public和缺省default。被public修饰的类可以在任意地方被访问;default类只可以被同一个包内部的类访问。权限由大到小:publicprotecteddefault(不写)private
推荐度:
点击下载文档文档为doc格式
1z3ec9nfuq0wacw0f2p46m3qp9xkwe00ypm
领取福利

微信扫码领取福利

微信扫码分享