Java类设计 ppt课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ppt课件
22
本章内容
Java类的继承 访问控制 方法的重载、覆盖 super 关键字
super 关键字 子类对象的实例化过程
多态性及其应用 Object 类及其主要方法
ppt课件
23
关键字super
在Java类中使用super来引用父类的成分
– super可用于访问父类中定义的属性 – 如果使用super关键字引用父类属性或者方法必须在方法块的
ppt课件
3
类的继承 (1)
为描述和处理个人信息,定义类Person:
Person
+name : String +age : int +birthDate : Date
+getInfo() : String
public class Person { public String name; public int age; public Date birthDate;
ppt课件
孙子类
9
类的继承 (6)
子类继承了父类,就继承了父类的方法和属性。 在子类中,可以使用父类中定义的方法和属性,也可以
创建新的数据和方法。 因而,子类通常比父类的功能更多。 在Java 中,继承的关键字用的是“extends”,即子类不是
父类的子集,而是对父类的“扩展”。
关于继承的规则:
public class Student { public String name; public int age; public Date birthDate; public String school;
public String getInfo() {...} }
ppt课件
5
类的继承 (3)
通过继承,简化Student类的定义:
public class UseBoth {
public void doOtherThing() {
Parent p1 = new Parent();
Child p2 = new Child();
p1.method1();
p2.method1();
}
}
ppt课件
21
练习2
修改练习1中定义的类Kids1,在Kids1中重新定义employed() 方法,覆盖父类ManKind中定义的employed()方法,输出“Kids should study and no job.”
return "Name: "+ name + "\n" +"age: "+ age;
}
} public class Student extends Person {
public String school;
Person p1=new Person(); p1.getInfo();
public String getInfo() {
“ job”(salary!=0)。
(2)定义类Kids1继承ManKind,并包括
– 成员变量 int yearsOld; – 方法 printAge() 打印 yearsOld 的值。
(3)在Kids1类的main方法中实例化Kids1的对象 someKid,用 该对象访问其父类的成员变量及方法。
}
}
ppt课件
20
覆盖方法举例Biblioteka 2)class Parent { public void method1() {}
}
class Child extends Parent { private void method1() {}
//非法,子类中的method1()的访问权限private比被覆盖方法的访问权限 public弱 }
子类不能继承父类中私有的(private)的成员变量和方法。
ppt课件
10
练习1
1.(1)定义一个ManKind类,包括
– 成员变量 int sex 和 int salary; – 方法 void manOrWorman():根据sex的值显示“man”(sex==1)或者
“women”(sex==0); – 方法 void employeed():根据salary的值显示“no job”(salary==0)或者
//调用Student类的getInfo()方法
Student s1=new Student(); ="Bob";
这是一种“多态性”:同名的方法,用不 同的对象来区分调用的是哪一个方法。
s1.age=20;
s1.school="school2";
System.out.println(s1.getInfo()); //Name:Bob age:20 school:school2
子类的对象可以调用的方法
ppt课件
17
本章内容
Java类的继承 访问控制 方法的重写、覆盖 super 关键字 多态性及其应用 Object 类及其主要方法
ppt课件
18
覆盖方法
在子类中可以根据需要对从父类中继承来的方法进行改造— 覆盖方法(方法的重置、重写),在程序执行时,子类的方法 将覆盖父类的方法。
public void cm2(){System.out.println("in cm2() c2=" + c2);}
public static void main(String args[]){
int i;
Parent p = new Parent();
i = p.f2; // i = p.f3;
}
Student +school : String
public class Student extends Person{
public String school;
}
//Student类继承了父类Person的所有属性和
方法,并增加了一个属性school。Person中
的属性和方法,Student都可以利用。
}
ppt课件
15
访问控制举例(2)
class Child extends Parent{
//设父类和子类在同一个包内
private int c1 = 21;
public int c2 = 22;
private void cm1(){System.out.println("in cm1() c1=" + c1);}
第一行出现 – super可用于调用父类中定义的成员方法 – super可用于在子类构造方法中调用父类的构造方法 – super的追溯不仅限于直接父类
ppt课件
24
关键字 super举例
public class Person { private String name; private int age; public String getInfo() { return "Name: " + name + "\nage: " + age; }
public String getInfo() {...} }
ppt课件
4
类的继承 (2)
为描述和处理学生信息,定义类Student:
Student
+name : String +age : int +birthDate : Date +school : String
+getInfo() : String
//覆盖方法
//调用Person类的getInfo()方法
return "Name: "+ name + "\nage: "+ age + "\nschool: "+ school; } public static void main(String args[]){
Student s1=new Student(); s1.getInfo();
i = p.f4;
p.fm2(); // p.fm3();
p.fm4();
Child c = new Child();
i = c.f2; // i = c.f3;
i = c.f4;
i = c.c1; // i = c.c2;
c.cm1(); // c.cm2(); c.fm2(); c.fm3(); c.fm4()
}
}
ppt课件
16
访问控制分析
父类Parent和子类Child在同一包中定义时:
f2_default f3_protected f4_public c1_private c2_public
子类对象可以 访问的数据
fm2()_default fm3()_ protected fm4()_ public cm1()_private cm2()_public
ppt课件
6
类的继承 (4)
类继承语法规则:
< 修饰符> class < 子类名称> [extends < 父类>] {
<属性和方法的声明> }
ppt课件
7
类的继承 (5)
Java只支持单继承,不允许多重继承
– 一个子类只能有一个直接父类 – 一个父类可以派生出多个子类
ppt课件
8
单继承举例
Person
+name : String +age : int +birthDate : Date
+getInfo() : String
父类
Soldier
Student +school : String
Officer
子类
Graduate +major : String +register() : void
覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表 和返回值类型。
覆盖方法不能使用比被覆盖方法更严格的访问权限。
ppt课件
19
public class Person {
覆盖方法举例(1)
public String name;
public int age;
public String getInfo() {
ppt课件
1
本章内容
Java类的继承 方法的重写、覆盖 访问控制 super 关键字 多态性及其应用 Object 类及其主要方法
ppt课件
2
本章内容
Java类的继承 方法的重写、覆盖 多态性及其应用 成员访问控制 对象的创建和初始化细节 几种常用的Java类
修饰符 private default protected public
同一个类 Yes Yes Yes Yes
同一个包
Yes Yes Yes
子类
Yes Yes
整体 Yes
ppt课件
14
访问控制举例(1)
class Parent{ private int f1 = 1; int f2 = 2; protected int f3 = 3; public int f4 = 4; private void fm1() {System.out.println("in fm1() f1=" + f1);} void fm2() {System.out.println("in fm2() f2=" + f2);} protected void fm3() {System.out.println("in fm3() f3=" + f3);} public void fm4() {System.out.println("in fm4() f4=" + f4);}
+findVolume() :double 计算圆pp柱t课体件 积
12
本章内容
Java类的继承 访问控制 方法的重载、覆盖 super 关键字 多态性及其应用 Object 类及其主要方法
ppt课件
13
访问控制
可以对Java类中定义的属性和方法进行访问控制----规定
不同的保护等级: public、protected、default、private
Person
+name : String +age : int +birthDate : Date
+getInfo() : String
public class Person { public String name; public int age; public Date birthDate; public String getInfo() {...}
+getRadius(): double
+findArea():double 计算圆的面积
-length:double
Cylinder (圆柱)
Cylinder(): 构造方法,将length属性初始化为1
+setLength(double length):void
+getLength():double
ppt课件
11
练习1
2.根据下图实现类。在TestCylinder类中创建Cylinder类的对 象,设置圆柱的底面半径和高,并输出圆柱的体积。
Circle (圆)
-radius :double
Circle():
构造方法,将radius属性初始化为1
+setRadius(double radius) : void
相关文档
最新文档