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

第7课件 封装、继承和多态(4学时 19-22)

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

精品教学课件设计 | Excellent teaching plan

第七讲义 面向对象——类

几种设计模式:

1. 当创建一个对象,若不想让对象的内容(私有成员变量)发生变化,则需要满足以下条件 (1) 所有数据域都是私有的;(2)没有修改方法setMethod;(3)没有一个访问器方法会返回一个指向可变数据域的引用。 不可变类/对象 例如:String类 2. 为了防止用户创建某个类的对象,则应该定义该类的私有构造方法。 例如:Math类 3. 当只允许某个类只能创建一个实例时,称为单例模式。

一、类的封装

方法的抽象;类的抽象;(将方法的实现和使用分开| 将类的实现和使用分开) 类的用户&类的开发者

二、类的继承和多态(2个学时)

继承是java在软件重用方面最重要的特征。能有效避免代码冗余,使系统易于理解和维护、 子类继承于父类,UML图表示,次类——超类,或 继承类—基类。

当子类继承父类的时候,子类可以继承父类的所有成员跟方法,继承下来不代表可以访问,要访问得看访问控制规则。私有属性也可以继承,不过根据访问控制规则,私有属性虽继承下来却不可以访问的,只有通过public的方法访问继承下来的私有属性。

B继承A类,C继承B类。A类中的私有属性,到了C会怎么样,能继承、访问吗?答案是:如果A中的属性有增加setget方法,可以访问的。举例

public class A { private int a;

public int getA(){ return a; }

public void setA(int a){ this.a=a; } }

public class B extends A{ private int b;

public int getB() { return b; }

public void setB(int b) { this.b = b; } }

public class C extends B { private int c;

public int getC() { return c; }

精品教学课件设计 | Excellent teaching plan

public void setC(int c) { this.c = c; } }

那么当C c1=new C()时。c1可以使用setA()getA()访问控制从A类中继承来的私有属性a;

由于构造方法是用来构造类的实例,它不同于属性和方法,其子类是不继承父类的构造方法,只能通过super从子类构造方法中调用。

构造方法可以调用重载的构造方法或其父类的构造方法(必须作为第一条语句),若没有显式调用它们任何一个,则编译器会把super();作为构造方法的第一条语句,调用父类无参构造方法.

若想override一个方法,则需要使用与其父类方法相同的签名.另外实例方法只有当其是可见的时候,才能被覆盖。静态方法与实例方法一样可以继承,但静态方法不能被覆盖,若父类定义的方法在子类中定义了,则父类中的静态方法被隐藏。

Java中所有的类都直接或间接继承于Object。若没有显式指定父类,则缺省Object父类 覆盖override同重载overload的区别:

Java语言的extends是不支持多重继承的,其多重继承是通过interface来实现的。是不支持

举例:构造方法链

举例:父类 子类继承了父类的。。。 举例:父类和子类的访问权限关系

思考:对于父类的私有成员,子类是否已经继承,或者是否只能继承父类的可视成员?

子类可以覆盖父类的protected方法,并把它的可见性改为public,但子类不能削弱谷类中定义的方法的可访问性。

关键字this :指向调用对象本身的引用名 关键字super :指向该类的父类的 java.util.Random +Random() Constructs a Random object with the current time as its seed. +Random(seed: long) Constructs a Random object with a specified seed. +nextInt(): int Returns a random int value. +nextInt(n: int): int Returns a random int value between 0 and n (exclusive). +nextLong(): long Returns a random long value. +nextDouble(): double Returns a random double value between 0.0 and 1.0 (exclusive). +nextFloat(): float Returns a random float value between 0.0F and 1.0F (exclusive). +nextBoolean(): boolean Returns a random boolean value.

精品教学课件设计 | Excellent teaching plan

Java面向对象 关键字

成员变量限定词的含义:

? static: 静态变量(类变量)

? final: 常量;transient: 暂时性变量,用于对象存档,用于对象的串

行化

? volatile: 贡献变量,用于并发线程的共享

方法的实现也包括两部分内容:方法声明和方法体。 方法声明

方法声明中的限定词的含义:

? static: 类方法,可通过类名直接调用 ? abstract: 抽象方法,没有方法体 ? final: 方法不能被重写 ? native: 集成其它语言的代码

? synchronized: 控制多个并发线程的访问

方法声明包括方法名、返回类型和外部参数。其中参数的类型可以是简单数据类型,也可以是复合数据类型(又称引用数据类型)。

对于简单数据类型来说,java实现的是值传递,方法接收参数的值,但不能改变这些参数的值。如果要改变参数的值,则用引用数据类型,因为引用数据类型传递给方法的是数据在内存中的地址,方法中对数据的操作可以改变数据的值。

方法体

方法体是对方法的实现,它包括局部变量的声明以及所有合法的Java指令。方法体中声明的局部变量的作用域在该方法内部。若局部变量与类的成员变量同名,则类的成员变量被隐藏。

为了区别参数和类的成员变量,我们必须使用this。this用在一个方法中引用当前对象,它的值是调用该方法的对象。返回值须与返回类型一致,或者完全相同,或是其子类。当返回类型是接口时,返回值必须实现该接口。

构造方法

? 构造方法是一个特殊的方法。Java 中的每个类都有构造方法,用来初始化

该类的一个对象。

? 构造方法具有和类名相同的名称,而且不返回任何数据类型。 ? 重载经常用于构造方法。

第7课件 封装、继承和多态(4学时 19-22)

精品教学课件设计|Excellentteachingplan第七讲义面向对象——类几种设计模式:1.当创建一个对象,若不想让对象的内容(私有成员变量)发生变化,则需要满足以下条件(1)所有数据域都是私有的;(2)没有修改方法setMethod;(3)没有一个访问器方法会返回一个指向可变数据域的引用。不可变类/对象
推荐度:
点击下载文档文档为doc格式
2dyig0dcqs7b3ef97wu606i7k4fff900zgr
领取福利

微信扫码领取福利

微信扫码分享