《JAVA程序设计实用教程》04类的封装性继承性多态性与接口

上传人:san****glu 文档编号:54712455 上传时间:2018-09-17 格式:PPT 页数:103 大小:853.50KB
返回 下载 相关 举报
《JAVA程序设计实用教程》04类的封装性继承性多态性与接口_第1页
第1页 / 共103页
《JAVA程序设计实用教程》04类的封装性继承性多态性与接口_第2页
第2页 / 共103页
《JAVA程序设计实用教程》04类的封装性继承性多态性与接口_第3页
第3页 / 共103页
《JAVA程序设计实用教程》04类的封装性继承性多态性与接口_第4页
第4页 / 共103页
《JAVA程序设计实用教程》04类的封装性继承性多态性与接口_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《《JAVA程序设计实用教程》04类的封装性继承性多态性与接口》由会员分享,可在线阅读,更多相关《《JAVA程序设计实用教程》04类的封装性继承性多态性与接口(103页珍藏版)》请在金锄头文库上搜索。

1、,第四章 类的封装性、继承性、 多态性与接口,前言,本章的目的:类的三大特性(封装性、继承性、多态性)、extends、super、方法重载与覆盖、接口(interface)、抽象类(abstract)、特殊的类(实名内部类、匿名内部类、泛型类、Class类),回顾关键词:类、对象、对象生成(new)、对象清除、对象的内存分配、构造方法、main方法、this、static、final、import,小题目,1、 下列程序有没有错误? class CMethod int i; int j; static int s; public void add() s=i+j; static void a

2、dd(int i, int j) this.i=i; this.j=j; s=i+j; ,小节安排,类的封装性 、继承性 、多态性与接口,4.1、封装性,4.2、继承性,4.3、多态性,4.4、抽象类,4.5、接口,4.6、内部类,4.1 封装性,目的 限制在类的外部对类内部成员进行访问,只通过公共接口来访问类的成员数据。 屏蔽细节:这是程序设计的基本思想方法,便于程序功能的扩展和程序的维护。 封装类 大多数变量都是私有的,变量通过他们自己类的方法修改,其它类都只与一个类中很少的几部分接口; 若变量或方法为公有,它就是接口的一部分,其它类可以访问它;若为私有,它是实现的一部分,只有类自己的成员

3、可以访问它,访问权限的设置,类的访问权限的设置,类的权限有两种:默认和public。 如果在一个源程序文件中,声明了若干个类的话,只能有一个类的权限关键字是public。这个类的名字应该和程序文件同名,main方法也应该在这个类中,否则程序无法执行。,类的成员的访问权限设置,用权限关键字设置类的成员的权限,以此决定是否允许其类外部的代码访问这些成员。,例: private int name,sex,age,stuID; public void setName(String name);,访问控制方式:public,被修饰为public的类是公共类,它可供所在包的其他类使用,也可供其他包中的类使

4、用,在程序中可以用import语句引入其他包中的public类。 被public定义的类中成员变量或方法可以供其他类访问,表明对外开放的方式;一般类的定义中,含有少量(或者没有) public 变量,部分 public 方法。,访问控制方式:private,设置private访问权限,则该类的成员只能被同一类中的成员访问,而不让其他类进行访问。 目的: 隐藏具体的实现细节 变量常常是private 采用 public “get” 方法读取数据 采用 public “set”方法写数据,访问控制方式:protected,同一个包内的所有类的所有方法都能访问该成员 如果不在同一个包内的类的方法要访

5、问该成员,则该类必须是该成员所在的类的子类,访问控制方式: 默认 (缺省方式),默认的权限,该类的成员能被同一包中的类访问。,封装性的可以带来的优点,基本思想: 提供对外的通讯方式,封装内部的实现机制 增加内部实现部分的可替换性 减小类之间的耦合关系,方便模块划分 容易保证类内部数据间的一致性,从而提高软件的可靠性,何时为public或private?,基本思想 类常常是public 成员变量常常是private. 构造方法一般是public. 方法“get”与“set”是 public. 其它方法需要根据实际的需要而定 上面的思想可以用于大部分的程序设计(也许90%),例子:根据以下的设计要

6、求编写java源代码。,类名: Student 变量(访问权限均为private): name(String) /姓名 age(int) /年龄 方法: 构造方法(没有参数,设置姓名为“无名氏”,年龄为20) setName(有一个名为name的String型参数,将name的值设为这个新值), getName (没有参数,返回姓名) setAge(有一个名为age的int型参数,将age的值设为这个新值), getAge (没有参数,返回年龄) isSameAge(有一个参数s,是另一个Student对象的引用,如果两个Student对象的age相同,则返回true,否则返回false),1

7、6,public class Student private String name; private int age; public Student() name=“无名氏“; age=20; public void setName(String name) this.name=name; public String getName() return name; public void setAge(int age) this.age=age; public int getAge() return age; ,public boolean isSameAge(Student s) if(s.

8、age-this.age=0) return true; return false; public static void main(String args) Student s1=new Student(); Student s2=new Student(); s2.age=20; System.out.println(s1.isSameAge(s2); ,Student类(续),某Java源程序中有一个类的定义为:public class MyPrg,则该源程序的文件名应该为:_ 。,小题目,MyPrg.java,对象是用_关键字实例化类之后的结果,_访问修饰符所声明的类成员,仅能被同包(

9、同路径)或具有继承关系的相关类使用。,new,protected,阅读下列程序,输出结果是( ) public class Example String str=new String(“hello“); char ch=d,b,c; public static void main(String args) Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.println(ex.str+“and“+ex.ch0); public void change(String str,char ch) str=“world“; ch

10、0= a; A. hello and d B. hello and a C. world and d D. world and a,小题目,B,Test.java程序代码如下,以上程序编译后用如下命令运行: java Test 1 2 3 4 运行的输出结果是什么?( ) public class Test public static void main(String args) System.out.println(args2); A. 1 B. 2 C. 3 D. 4,小题目,C,小节安排,类的封装性 、继承性 、多态性与接口,4.1、封装性,4.2、继承性,4.3、多态性,4.4、抽象类

11、,4.5、接口,4.6、内部类,4.2、继承性,继承是复用程序代码的有力手段,当多个类(Sub1,Sub2)之间存在相同的属性和方法时,可从这些类抽象出父类SuperClass。 被继承的类称为超类(父类)。 从超类派生出来(继承超类)的新类称子类。 Java只支持单重继承,不支持多重继承,继承的层次结构,一个子类成为另一个子类的超类。,继承的基本语法, class extends 子类体 例: public class SubClass extends SuperClass ,Student和Teacher继承People,例:Student和Teacher继承People,public c

12、lass People String name; char sex; int age; public String getName() return name; public char getSex() return sex; public int getAge() return age; public void printInfo() System.out.println(“name:”+name+“ sex:”+sex+“ age:”+age); ,例:Student和Teacher继承People,public class Student extends People String st

13、udentID; String major; public String getMajor() return major; public String getStudentID() return studentID; ,例:Student和Teacher继承People,public class Teacher extends People String teacherID; String department; public String getDepartment() return department; public String getTeacherID() return teache

14、rID; ,子类继承超类的成员变量,继承原则:子类只继承超类中非private的成员变量 隐藏原则:子类的成员变量和超类的成员变量同名时,超类的成员变量被隐藏(不能继承),子类继承超类的成员方法,继承原则:子类只继承超类中非private的成员方法。 覆盖原则:子类的成员方法和超类的成员方法同名时,超类的成员方法被子类的成员方法覆盖(不能继承)。,super关键字,super表示对某个类的超类的引用。 如子类和超类有同名的成员变量或方法,则: super. super. 表示引用超类的成员(如无super则表示子类中的同名成员),this关键字,在类定义中的方法中需要引用正在使用该方法的对象时

15、,可以用“this”表示。 用this引用的使用方法如下: 用this指代对象本身 访问本类的成员: this. this. 调用本类的构造方法: this(参数列表),构造方法的继承,构造方法不存在继承关系。 如果子类没有构造方法,则它默认调用超类无参数的构造方法; 如果子类有构造方法,那么在创建子类的对象时,则将先执行超类的构造方法,然后再执行自己的构造方法。 对于超类中包含有参数的构造方法,子类可以通过在自己的构造方法中使用super关键字来引用,而且必须是子类构造方法中的第一条语句。 用super调用超类的构造方法:super(参数列表),例:通过super关键字实现对父类构造方法与成员方法的访问,class People private String name ; private char sex; private int age; public People(String name,char sex,int age) this.name = name; this.sex=sex; this.age = age; public String getDetails( ) return “Name:“+name+“nsex:“+sex+“nage: “+age; ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号