第三章面向对象高级特性

合集下载

Python程序设计基础教程

Python程序设计基础教程

Python程序设计基础教程第一章:Python简介和安装1.1 Python的历史和发展Python是Guido van Rossum在1980年代末和1990年代初设计的一种编程语言。

文章介绍了Python的起源、发展和目前的应用领域。

1.2 Python的优势和特点本节详细介绍了Python作为一种高级编程语言的优势和特点,例如简洁明了的语法、强大的标准库和广泛的社区支持。

1.3 Python的安装步骤提供了详细的Python安装指南,包括不同操作系统下的安装方法、环境配置和验证安装是否成功。

第二章:Python基本语法2.1 变量和数据类型介绍了Python中常见的数据类型,包括数字、字符串、列表、元组和字典,以及如何定义和使用变量。

2.2 条件和循环详细介绍了Python中的条件语句(if-else语句)和循环语句(for循环和while循环),以及如何使用它们来控制程序的执行流程。

2.3 函数和模块介绍了如何定义和调用函数,以及如何使用模块来组织和管理Python代码。

第三章:Python高级特性3.1 列表生成式详细介绍了Python中列表生成式的语法和用法,以及如何利用列表生成式简化代码和实现复杂的数据处理。

3.2 迭代器和生成器解释了Python中迭代器和生成器的概念,并展示了如何定义和使用它们来实现高效的数据处理和遍历。

3.3 装饰器介绍了Python中装饰器的概念和用法,以及如何使用装饰器来增强已有函数的功能。

第四章:Python文件操作和异常处理4.1 文件读写介绍了Python中文件读写的基本操作,包括打开文件、读取内容、写入内容和关闭文件。

4.2 异常处理详细讲解了Python中的异常处理机制,包括如何捕捉和处理异常以及如何自定义异常类。

第五章:Python面向对象编程5.1 类和对象解释了Python中类和对象的概念,包括如何定义类、创建对象和调用对象的方法。

5.2 继承和多态介绍了Python中的继承和多态特性,以及如何使用它们来实现代码的重用和灵活性。

面向对象高级特性

面向对象高级特性

案例分析:泛型在集合类中的应用
Java集合框架中的许多类都使用了泛型,如`ArrayList<E>`、`HashSet<E>`等。这些 泛型类允许我们存储和操作各种数据类型的元素,同时保证了类型安全。
在使用这些集合类时,我们可以指定具体的元素类型,如`ArrayList<String>`表示存 储字符串的列表,`HashSet<Integer>`表示存储整数的集合。
异常处理流程
异常抛出
当程序中出现错误或异常情况时, Python解释器会自动抛出异常,同时 终止程序的执行。
异常处理
在`except`块中,可以编写处理异常 的代码逻辑,例如打印错误信息、回 滚事务、关闭资源等。
异常捕获
使用`try-except`语句块来捕获异常,避免 程序因异常而中断执行。在`try`块中编写可 能引发异常的代码,在`except`块中处理异 常。
1 2 3
常见异常类型
包括`Exception`、`Error`、`RuntimeError`、 `TypeError`等,每种异常类型对应特定的错误情 况。
捕获异常方式
使用`try-except`语句块来捕获异常,其中`try` 块包含可能引发异常的代码,`except`块用于处 理异常。
多重异常捕获
桥接模式(Bridge Pattern)
将抽象部分与实现部分分离,使它们都可以独立地变化。
组合模式(Composite Patte…
将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式 使得用户对单个对象和复合对象的使用具有一致性。
装饰器模式(Decorator Patt…
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模 式相比生成子类更为灵活。

07_面向对象高级特性三

07_面向对象高级特性三
4
把上节作业中Shape类的三个方法都改成抽象方法,其它按原来要求。看看结果是否一样。
5
设计飞的接口IFly,接口包含fly()方法。让鸟类Bird和飞机类Airplane实现这个接口。
编写用户程序FlyDemo,在程序中分别把鸟和飞机的对象赋值给接口,并调用接口的方法。
要求:
封装一个空调类,包涵风力和风向。里面有两个属性。风力、风向。并生成Set和Get方法。
要求空调的属性有制冷参数、功率参数等。
要求使用继承结构。空调底下有格力空调、美的空调等。
要求空调的包括(打开)turnOn、(关闭)turnoff()、(调整风力和风向)turnWind()方法等。
要求有些方法使用抽象方法,有些方法使用接口实现。
面向对象特性面向对象三大特性面向对象的特性面向对象编程面向对象程序设计面向对象三个特性面向对象什么是面向对象php面向对象java面向对象
面向对象高级特性_3课后作业
一、简答题
1.接口跟抽象类的异同?
陈述:
2.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)?
陈述:
:
二、上机題:对应编号详细要求 Nhomakorabea1
把上节作业的Animal类中的方法bark改成抽象,然后同样编写实现多态的实例。
2
将Animal这个类改为接口,让其Dog、Cat等原先的类由继承Animal类改类实现Animal这个接口。同样编写实现多态的实例。
3
利用教室中的空调,通过抽象类和接口的混合使用。完成对空调的操作。

03_面向对象高级特性

03_面向对象高级特性

面向对象高级特性python.Style讲师:郭帆西安西部开源教育科技有限公司类属性与实例属性类方法与静态方法property 类属性目录Contents 单例模式01类属性与实例属性类属性与实例属性类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本。

在前面的例子中我们接触到的就是实例属性(对象属性),它不被所有类对象的实例对象所共有,在内存中的副本个数取决于对象个数。

02类方法与静态方法类方法是类对象所拥有的方法,需要用修饰器一般以@classmethod来标识其为类方法, 1). 对于类方法,第一个参数必须是类对象,作为第一个参数(cls是形参,可以修改为其它变量名,但最好用'cls'了)2). 能够通过实例对象和类对象去访问。

静态方法需要用修饰器一般以@staticmethod来标识其为静态方法, 1). 静态方法不需要多定义参数2). 能够通过实例对象和类对象去访问。

04property类属性property类属性什么是property属性?一种用起来像是使用的实例属性一样的特殊属性,可以对应于类的某个方法。

property属性的定义和调用要注意一下几点:1.定义时,在实例方法的基础上添加 @property 装饰器;并且仅有一个self参数2.调用时,无需括号property类属性类属性应用需求:对于京东商城中显示电脑主机的列表页面,每次请求不可能把数据库中的所有内容都显示到页面上,而是通过分页的功能局部显示,所以在向数据库中请求数据时就要显示的指定获取从第m条到第n条的所有数据这个分页的功能包括:•根据用户请求的当前页和总数据条数计算出 m 和 n•根据m 和 n 去数据库中请求数据property类属性property属性的有两种方式:•装饰器即:在方法上应用装饰器•类属性即:在类中定义值为property对象的类属性注意:•经典类中的属性只有一种访问方式,其对应被 @property 修饰的方法•新式类中的属性有三种访问方式,并分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法04单例模式对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。

面向对象程序设计 类的高级特性

面向对象程序设计 类的高级特性
24
内部类
• 内部类为非静态的嵌套类。 • 在类中定义的类称为内部类。 • 内部类之外的类称为外部类。
• 内部类可以访问其外部类的所有变量和方 法,并能够以和外部类的其他非静态成员 相同的方式直接引用它们。 • 内部类完全在其包围类的范围之内。
25
总结
• 类中的静态变量、方法或代码块并不具体 到实例,它们可以与类的名称一起使用, 而无需创建类的对象来访问类的静态特性。 • final 修饰符可应用于类、方法和变量。 • 定义抽象类的目的是提供可由其子类共享 的一般形式。 • 接口就是需要由其他类实现的行为模板。
2
目标
• 掌握类的静态成员 • 掌握final关键字用法 • 掌握抽象类的定义和用法 • 掌握接口的定义和用法 • 掌握高级访问控制 • 了解内部类的概念
3
类的静态成员
用static修饰符修饰, 可以是变量、方法或代 码块
• 类中的静态变量、方法或代码块属于类, 而不属于某个特定的对象。 • 类的静态成员可以与类的名称一起使用, 而无需创建类的对象。
class TestFinal { final void f() {} } class Further extends TestFinal { final void f(){} final方法不能 } 被覆盖
9
final 变量
• 一个变量可以声明为final,这样做的目的 是阻止它的内容被修改。 • 声明final变量后,只能被初始化一次,然 后就不能对其值进行修改。 • 一个final变量实质上是一个常量。
7
final 关键字/final类
• final 修饰符可应用于类、方法和变量。 • final在应用于类、方法和变量时意义是不 同的,但本质是一样的:final表示不可改 变。 • 声明为final的类不能被继承。 final class TestFinal { int i = 7; • final 类示例:

实验报告实例

实验报告实例

上海理工大学光电信息与计算机工程学院《面向对象程序设计实验》实验报告专业姓名学号年级指导教师成绩:教师签字:目录实验一面向对象开发环境C++基础实验二C++语言进阶实验三面向对象高级特性实验成绩细化表实验一面向对象开发环境基础一、实验目的(1)了解C++的开发环境,学会独立使用该系统。

(2)了解在该系统上如何编辑、编译、连接和运行一个C++程序。

(3)通过运行简单的C++程序,初步了解C++源程序的基本组成。

.(4)掌握C++中基本数据类型。

(5)掌握C++中各种运算符的作用、优先级和结合性,能熟练运用各种表达式。

(6)掌握不同数据类型的输入输出。

(7)掌握简单的语法错误的查找和改正方法。

二、实验设备PC机,操作系统Windows 8,开发环境Visual Studio 2010三、实验原理配套教材实验一、实验二四、实验源程序//2-35#include <iostream>#include <iomanip>using namespace std;int main(){int x,y,ans;for(x=1;x<10;x++){for(y=1;y<10;y++){ans=x*y;cout<<x<<"*"<<y<<"="<<setw(2)<<ans<<"";}cout<<endl;}system("pause");return 0;}五、自评良好实验二C++语言进阶一、实验目的(1)熟练掌握if语句、switch语句、for语句、while及do-while语句(2)掌握转移控制语句(3)理解编译预处理(4)掌握函数的定义和调用(5)掌握数组的定义和使用(6)掌握结构和枚举类型的定义方法和使用(7)掌握指针的使用方法及应用(8)掌握指针与数组(9)掌握指针传递和引用传递二、实验设备PC机,操作系统Windows 8,开发环境Visual Studio 2010三、实验原理配套教材实验三、实验五、实验六四、实验源程序//3-2#include<iostream>#include<stdlib.h>using namespace std;int Max1(int a,int b){if(a>b)return(a);elsereturn(b);}int Max1(int a, int b,int c){if(a>b){if(a>c)return(a);}else{if(b>c)return(b);elsereturn(c);}}double Max1(double x,double y){if(x>y)return(x);elsereturn(y);}double Max1(double x,double y,double z) {if(x>y){if(x>z)return(x);}else{if(y>z)return(y);elsereturn(z);}}int main(){int a,b,c;double x,y,z;cout<<"请输入两个整数:";cin>>a>>b;cout<<"最大值为:"<<Max1(a,b)<<endl; cout<<"请输入三个整数:";cin>>a>>b>>c;cout<<"最大值为:"<<Max1(a,b,c)<<endl; cout<<"请输入两个双精度数:";cin>>x>>y;cout<<"最大值为:"<<Max1(x,y)<<endl; cout<<"请输入三个双精度数:";cin>>x>>y>>z;cout<<"最大值为:"<<Max1(x,y,z)<<endl;system("pause");return 0;}//5-14#include<iostream>usingnamespace std;class Boat;class Car{private:int weight;public:Car(int j){ weight=j;}friendint getTotalWeight(Car &aCar,Boat &aBoat);};class Boat{private:int weight;public:Boat(int j){ weight=j;}friendint getTotalWeight(Car &aCar,Boat &aBoat);};int getTotalWeight(Car &aCar,Boat &aBoat){ return aCar.weight+aBoat.weight;}int main(){Car c(10);Boat b(7);cout<<"The total weight is : "<<getTotalWeight(c,b)<<endl; system("pause");return 0;}//6-6#include<iostream>#include<string>usingnamespace std;class Employee{private:char name[30];char stree[30];char city[30];char zip[6];public:Employee();void change_name();void display();};Employee::Employee(){strcpy(name,"lianmeng");strcpy(stree,"piamganjie3hao");strcpy(city,"shanghai");strcpy(zip,"900000");}void Employee::change_name(){cout<<"Enter a name:";cin>>name;}void Employee::display(){cout<<"\n"<<name<<"\t"<<stree<<"\t"<<city<<"\t"<<zip<<"\t"; }int main(){int i;Employee *p=new Employee[5];for(i=0;i<5;i++){p[i].display();}for(i=0;i<5;i++){cout<<"\nnumber"<<i+1<<" : "<<endl;p[i].change_name();}for(i=0;i<5;i++){ p[i].display(); }delete p;system("pause");return 0;}五、自评良好实验三面向对象高级特性一、实验目的(1)掌握类与对象的定义(2)掌握对象成员的访问、构造函数和析构函数(3)理解基类和派生类(4)掌握单一继承和多重继承的定义和使用方法(5)掌握运算符重载程序的编写(6)掌握虚函数的编写和使用(7)掌握流类库与输入/输出;异常处理二、实验设备PC机,操作系统Windows 8,开发环境Visual Studio 2010 三、实验原理配套教材实验四、七、八、十一四、实验源程序//4-8#include<iostream>usingnamespace std;class Dog{public:Dog(int nage=0,int nweight=0){age=nage;weight=nweight;}Dog(Dog &d);inlinevoid showstatus();void setstatus();private:int age,weight;};Dog::Dog(Dog &d){age=d.age;weight=d.weight;}inlinevoid Dog::showstatus(){cout<<"His status is:"<<endl<<"age:"<<age<<"\tweight:"<<weight<<"kg"<<endl; }void Dog::setstatus(){int na,nw;cout<<"Please set age and weight:";cin>>na>>nw;age=na;weight=nw;}int main(){Dog Zangming(19,60);cout<<"Here is a dong Zangming!!"<<endl;Zangming.showstatus();cout<<"Please reset his status!"<<endl;Zangming.setstatus();cout<<"\n\nNow:"<<endl;Zangming.showstatus();system("pause");}//7-6#include<iostream>usingnamespace std;class Mammal{public:Mammal(int a,int w):age(a),weight(w){cout<<"Mammal Constructor called..."<<endl;}~Mammal(){cout<<"Mammal Destructor called..."<<endl;}private:int age;int weight;};class Dog:public Mammal{public:Dog(int a,int w):Mammal(a,w){cout<<"Dog Constructor called..."<<endl;}~Dog(){cout<<"Dog Destructor called..."<<endl;}};int main(){{cout<<"Constructing a Mammal..."<<endl;Mammal mammal(8,12);cout<<endl<<"Constructing a Dog..."<<endl;Dog dog(3,9);cout<<endl<<"Destructing......"<<endl;}system("pause");return 0;}//8-5#include<iostream>usingnamespace std;class Mammal{public:Mammal(){cout<<"Mammal Constructor..."<<endl;} ~Mammal(){cout<<"Mammal Destructor..."<<endl;} virtualvoid speak()=0;};class Dog:public Mammal{public:Dog(){cout<<"Dog Constructor..."<<endl;}~Dog(){cout<<"Dog Destructor..."<<endl;}virtualvoid speak();};void Dog::speak(){cout<<"Dog's sound...."<<endl;}int main(){Dog *pdog=new Dog;pdog->speak();delete pdog;system("pause");return 0;}//11-5#include<fstream>#include<iostream>usingnamespace std;int main(){ofstream file1("test.txt",ios::app);file1<<"已成功添加字符!";file1.close();char ch;ifstream file2("test.txt");while(file2.get(ch))cout<<ch;file2.close();system("pause");return 0;}五、自评良好实验成绩细化表。

简述面向对象的特点

简述面向对象的特点

简述面向对象的特点
面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它将程序中的数据和操作数据的方法组合成一个对象,以此来描述现实世界中的事物和概念。

面向对象编程具有以下特点:
1. 封装性:封装是指将数据和方法封装在一个对象中,对外部隐藏对象的内部实现细节,只暴露必要的接口。

这样可以保证数据的安全性和一致性,同时也方便了代码的维护和重用。

2. 继承性:继承是指一个类可以继承另一个类的属性和方法,从而减少代码的重复性。

子类可以重写父类的方法,也可以添加自己的方法和属性,从而实现更加灵活的功能。

3. 多态性:多态是指同一个方法可以根据不同的对象调用出不同的行为。

多态可以提高代码的可扩展性和可维护性,同时也可以提高代码的可读性和可理解性。

4. 抽象性:抽象是指将具有相似特征的对象抽象成一个类,从而减少代码的重复性。

抽象类和接口是面向对象编程中的重要概念,它们可以定义一些方法和属性,但是不能被实例化,只能被子类继承或实现。

面向对象编程的特点使得它在软件开发中得到了广泛的应用。

它可以提高代码的可重用性、可扩展性和可维护性,同时也可以提高代码的可读性和可理解性。

面向对象编程可以应用于各种领域,如游
戏开发、Web开发、桌面应用程序开发等。

随着计算机技术的不断发展,面向对象编程也在不断地演化和发展,如面向方面编程(Aspect-Oriented Programming,AOP)、面向服务编程(Service-Oriented Programming,SOP)等。

面向对象的高级特性_参考答案

面向对象的高级特性_参考答案

Ⅰ.选择题1、给定下列代码:B当在第6行加入什么方法时会引起编译错误?2、给定以下代码:B执行后的结果是?A. 打印字符串“T ested”B. 编译失败C. 代码运行成功但无输出D. 运行时抛出异常3、MAX_LENGTH是int型public成员变量, 变量值保持为常量100,用简短语句定义这个变量?( CD )A. public int MAX_LENGTH=100;B. final int MAX_LENGTH=100;C. final public int MAX_LENGTH=100;D. public final int MAX_LENGTH=100.4、给出以下代码,请问该程序的运行结果是什么?(B)1.class A { static void foo(int i ) {};}2. class B extends A{ void foo( int i ){};}A 第1行编译错误。

B 第2行编译错误。

C 代码编译成功。

//静态方法不能被重写4、有关类的说法正确的是(B)A.类具有封装性,所以类的数据是不能被访问的B.类具有封装性,但可以通过类的公共接口访问类中的数据C.声明一个类时,必须使用public修饰符D.每个类中必须有main方法,否则程序无法运行5、将类的访问权限设置为默认的,则该成员能被(A)A. 同一包中的类访问B.其他包中的类访问C.所有的类访问 D.所有的类的子类访问6、假设下面的程序代码都放在MyClass.java文件中,(D)程序代码能够编译通过。

A.import java.awt.*;package mypackage;calss MyClass{ }B.package mypackage;import java.awt.*;public class myClass{ }C.int m;package mypackage;import java.awt.*;class MyClass{ }D./*This is a comment*/package mypackage;import java.awt.*;public class MyClass{ }7、假设在java源程序文件“MyClass.java”中只含有一个类,而且这个类必须能够被位于一个庞大的软件系统中的所有java类访问到,那么下面(C )声明有可能是符合要求的类声明。

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

• 构造方法、静态方法、私有方法、final方法不
能被声明为抽象的方法。
接 口(interface)

抽象类
抽象类是抽象方法和非抽象方法的集合
[访问权限修饰符] abstract class 类名 { …… }
特殊情况 全部是抽象方法 全部为非抽象方法
abtract class A { String name; abstract int method1(int a, int b); void sayHi( ){ System.out.println(“Hello!”); }
本例将报出错误
public class Demo { public static void main(String[] args) { Circle c = new Circle(2.5f); //实例化"圆"类对象 } }
构造方法的执行顺序
• 当实例化子类的对象时,必须先执行父类的构
造方法,然后再执行子类的构造方法;
Worker +dressAllowance()

继承的好处
实现类的重用
易维护
-name -birth -salary +getDetail() +getSalary()
Officer -department +vehicleAllowance()
类的继承

继承的规则
Java中只支持单继承,也就是说每个类只能有一个父类,不允许
使用 继承
Worker +dressAllowance()
Employee -name -birth -salary +getDetail() +getSalary()
Officer -department +vehicleAllowance()
• 继承是利用现有的类创建新类的过程,现有的类称作基类(
方法重写后,通过super关键字调用父类的普通方法
public class SoftwareTeacher extends Teacher { public void giveLesson(){ System.out.println("使用电脑授课"); super.giveLesson(); } 通过调用父类的普通方法,完成部分功能 }
第三章 面向对象高级特性
本章要点

类的继承
继承的规则
子类的构造方法
方法的覆盖 final 关键字

接口
接口的规范 引用数据类型的转换 多态


Java中的包
包和访问权限修饰符
类的封装和内部类
主要内容
1 2 3 4
类的继承
接口
Java中的包
类的封装和内部类
类的继承

类的继承 假如你在为某个公司做一个企业管理软件,来管理企业的雇员,比如:
在Java中定义一个类时,让该类通过关键字extends继承一个已有的类,这 工人(Worker)有姓名、出生日期和薪酬属性,需要获得名字、年龄、薪酬 就是类的继承 和服装津贴; 主任(Officer)同样包含姓名、出生日期和薪酬属性,另外 被继承的类称为父类(超类,基类),新的类称为子类(派生类)。 还有一个 department(他所管理的部门),同样他也有获得姓名、年龄和 子类继承父类的所有属性和方法,同时也可以增加自己的属性和方法。
或父类),创建的新类称作派生类(子类)。
• Java中所有的类都是通过直接或间接地继承ng.Object类
得到的。

在Java中定义一个类时,让该类通过关键字extends继承一个已有的类,这 就是类的继承 派生类 基类 方法和属性 基类方法 + 附加方法
类的继承

继承的语法
示例 Employee.java
Worker.java
[修饰符] class 子类名 extends 父类名
类的继承

继承的语法 ☻ 练习 Officer.java TestOfficer.java
用 java 中类的继承机制,实现 Officer 类,并设计一个测试程序
TestOfficer类,来访问Officer类
Employee
方法:不能在子类中被覆盖,即不能修改。
1.final 修饰成员变量
final修饰变量,则成为常量,例如 final type variableName;
修饰成员变量时,定义时同时给出初始值,而修饰 局部变量时不做要求。
2.final 修饰成员方法
final修饰方法,则该方法不能被子类重写。
final returnType methodName(paramList){ … }
薪酬的方法,还有一个获得交通补助的方法。你怎么做?
Officer
Worker -name -birth -salary +getDetail() +getSalary() +dressAllowance()
-name -birth -salary -department +getDetail() +getSalary() +vehicleAllowance()
super总结

arametersopt)调用父类的构造函数。 必须是子类构造函数的第一条语句。 如果子类中没有显式地调用父类的构造函数,那么将自
动调用父类不带参数的构造函数。


父类的构造函数在子类构造函数之前执行。 super.data super.method(parameters)
练习
☻ 练习 Shape.java Rect.java TestShape.java Circle.java Square.java
设计一个形状类:属性:周长和面积;方法:求周长和求面积 形状类的子类:Rect(矩形),Circle(圆形)
Rect 类的子类:Square(正方形)
不同的子类会有不同的构造方法及计算周长和面积的方法 写一个测试类,在main方法中创建三个不同的形状对象,放在
类的继承

方法的覆盖(override)
重写(rewrite) 对从父类中继承来的方法进行改造 在子类继承父类时发生
示例

TestOffice_1.java
方法覆盖的规则
在子类中的覆盖方法与父类中被覆盖的方法应具有 相同的方法名 相同的参数列表(参数数量、参数类型、参数顺序都要相同) 相同的返回值类型 子类覆盖方法的访问权限要不小于父类中被覆盖方法的访问权限
Shape 类型的数组里,分别打印出每个对象的周长和面积
Contents
1 2 3 4
类的继承
接口
Java中的包
类的封装和内部类
接 口(interface)

抽象方法
只有方法声明,没有方法实现的方法
[访问权限修饰符] abstract 返回值类型
抽象方法名 (参数列表) ;
class A { abstract int method1(int a, int b) ; }
super (参数1,参数2,…);
如果使用super关键字调用父类构造方法,必须写在该子类构造方法的
第一行 如调用的是父类中无参的构造方法,则可以不写super( ) 如果子类中调用了父类无参的构造方法,而父类中没有无参构造方法 则系统编译出错
案例
class Point { //定义"点"类 //x轴坐标和y轴坐标,由于准备用于继承,故修饰为protected protected float mX, mY; public Point(float x, float y) { //构造方法 mX = x; mY = y; } } class Circle extends Point { protected float mRadius; public Circle(float r) { mRadius = r; } } //定义"圆"类继承于"点"类 //半径 //构造方法
class ep4_12_a { static final double pi = 3.1415926; // 声明静态常量 public final void f() { // 声明最终方法 System.out.println("pi=" + pi); } } class ep4_12_b extends ep4_12_a { int num = 100; private void f() { // 出错,不可覆盖父类的最终方法 System.out.println("num=" + num); } } class ep4_12 { public static void main(String args[]) { ep4_12_b One = new ep4_12_b(); One.f(); } }
调用父类的成员
– –
类的继承

给定以下代码:
下列描述哪些是正确的_____? A. 编译失败 C. 在第7行抛出异常 B. 代码正常运行 D. 在第2行抛出异常 答案:A
类的继承
☻ 练习 Officer.java
在Officer类中,创建一个构造方法,要求在调用该构造方法时,
可以对name、birth、salary、department属性赋初值
答案:A C
类的继承
☻ 练习
给定下列代码:
当在第6行加入什么方法时会引起编译错误?
答案:B
方法覆盖注意

仅当方法是可访问的实例方法时,才能被覆盖,即私有
相关文档
最新文档