第二部分 Java语言基础篇

更新时间:2023-06-08 04:31:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第二部分 Java语言基础篇

第二部分 Java语言基础篇第4章 Java语言与面向对象(之二)

第二部分 Java语言基础篇

学习目的 学习了解面向对象编程特点,理解 面向对象的基本概念以及Java系统 对类与对象概念的实现,从而能进 一步掌握面向对象的程序开发技术。 在深入学习过程中,学习Java语言 重要的继承特征;理解和掌握面向 对象系统中的接口技术;并能学会 熟练使用系统提供的类包等技术。2

第二部分 Java语言基础篇

主要内容 Java语言的类和对象 Java类的继承与封装 Java语言的接口和包 Java语言的异常处理 【综合案例】 本章小结3

第二部分 Java语言基础篇

4.2 类的继承与封装 继承(Inheritance)就是面向对象程序的两 个类之间的一种关系。类继承也称为类派生, 是指一个类可以继承其他类的所有内容,包括 数据和方法。被继承的类称为父类或者超类 (Superclass),继承后产生的类称为子类或派 生类(Subclass)。 面向对象程序设计允许一个父类,可以同时 拥有多个子类,一个子类可以同时继承多个父 类,后者称为多重集成。 Java不直接支持多重继承,而是使用接口来 实现子类从多个父类获取属性和方法。Java通 过关键字extends来实现类的继承。4

第二部分 Java语言基础篇

4.2.1【综合案例4-4】abstract class Goods { String goods; float price; double total; int num;

不同类别消费人员购物收费程序。//定义抽象类

public abstract void goods(String _goods, float _price, int _num);//定义抽象方法

} class Common extends Goods //定义子类(一级子类) { public void showCommon() { System.out.println("这是一个普通用户"); } public void goods(String _goods, float _price, int _num) { goods=_goods; price=_price; num=_num; total=_price*_num; //调用父类的变量 } public void showBuy() { System.out.println("货物:"+goods); System.out.println("价格:"+price); System.out.println("数量:"+num); System.out.println("总价:"+total); 5 } }

第二部分 Java语言基础篇

final class Associator extends Common //定义终结子类(二级子类) { public void showAssociator() { System.out.println("这是一个会员用户"); } public void showBuy() { super.showBuy(); System.out.println("作为会员用户,享受九折优惠"); System.out.println("总价:"+total*0.9); } } 程序运行结果: public class BuyGoods 这是一个普通用户 { public static void main(String args[]) 货物:电视机 { Common AA=new Common(); //声明一级子类对象并初始化 价格:3800.0 AA.showCommon(); //调用一级子类内部成员方法 数量:2 AA.goods("电视机", 3800, 2); //实例化对象 总价:7600.0 AA.showBuy(); //调用一级子类内部成员方法 这是一个会员用户 Associator BB=new Associator(); //声明二级子类对象并初始化 货物:洗衣机 BB.goods("洗衣机", 1980, 3); //实例化对象 BB.showAssociator(); //调用二级子类内部成员方法 价格:1980.0 BB.showBuy(); /

/调用一级子类(父类)成员方法 数量:3 } 总价:5940.0 6 } 作为会员用户,享受九折优惠 总价:5346.0

第二部分 Java语言基础篇

4.2.2 继承 继承实质上就是从一个类中派生出另一个类, 其中前者称为父类,后者称为子类,子类代表父 类的一种增强或改进。1.子类的创建 语法格式:

[访问修饰符] class 子类名 extends 父类名 {[成员变量定义]

[成员方法定义]}7

第二部分 Java语言基础篇

特殊变量this 和super this的使用场合 用来访问当前对象的数据成员, 使用形式:this.数据成员 用来访问当前对象的成员方法, 使用形式:this.成员方法(参数) 当有重载的构造方法时,用来引 用同类的其它构造方法, 使用形式:this(参数)8

第二部分 Java语言基础篇

特殊变量this 和super super的使用场合 用来访问直接父类隐藏的数据成员,使用形式:super.数据成员

用来调用直接父类中被覆盖的成员方法,使用形式:super.成员方法(参数) 用来调用直接父类的构造方法,

使用形式:super(参数)9

第二部分 Java语言基础篇

程序段4-8

——特殊变量this和super演示练习

class Point //父类声明 { protected int x,y; Point(int a,int b) {setPoint(a,b);} public void setPoint(int a,int b) { x=a; y=b; } } class Line extends Point //子类声明 { protected int x,y; Line(int a,int b) { super(a,b); //调用父类构造方法 setLine(a,b); } public void setLine(int x,int y) { this.x=x+x; //当前对象的数据运算 this.y=y+y; }

第二部分 Java语言基础篇

——特殊变量this和super演示练习public double length() { int x1=super.x, y1=super.y; //局部变量取父类数据成员值 int x2=this.x, y2=this.y; //局部变量取子类数据成员值 return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); } public String toString() { return "直线端点:["+super.x+","+super.y+"] ["+x+","+y+"]\n直线长度:"+this.length(); } } public class TestPoint { public static void main(String args[]) { Line line=new Line(50,50); System.out.println("\n"+line.toString()); 程序运行结果: } 直线端点:[50,50][100,100] } 直线长度:70.7106781186547611

第二部分 Java语言基础篇

构造方法的继承 子类无条件地继承,继承父类的不含参数的 构造方法; 如果子类自己没有构造方法,则它将继承父 类的无参构造方法作为自己的构造方法。 如果子类自己定义了构造方法,则在创建新 对象时,它将先执行继承自父类的无参数构 造方法,然后再执行自己的构造方法。 对于父类的含参数构造方法,子类可以通过 在自己的构造方法中使用super关键字来调用 它,但这个调用语句必须是子类构造方法的 第一个可执行语句。12

第二部分 Java语言基础篇

父类对象与子类对象的转换 子类对象可被视为是其父类的一 个对象; 父类对象不能被当作是其某一个 子类的对象; 如果一个方法的形参是父类的对 象,则在调用该方法时,可

以使用 子类对象作为实参; 父类对象引用指向——子类对象。13

第二部分 Java语言基础篇

程序段4-9 ——父类对象引用指向——子类对象class SuperClass //定义父类 { int x; …… } class SubClass extends SuperClass //定义子类 { int y; char ch; …… } public class UseSuperSub //使用父类与子类 { SuperClass sc, sc_ref; SubClass sb, sb_ref; sc=new SuperClass( ); sb=new SubClass( ); sc_ref=sb; //父类引用指向子类对象 sb_ref=(SubClass)sc_ref; //父类引用转换成子类引用 }14

第二部分 Java语言基础篇

abstract和final 抽象类是包含一个或多个抽象方法的类。 抽象方法是指在抽象类中定义的方法,这 些方法只有方法头的声明,而用一个分号 来代替方法体的定义,即只定义成员方法 的接口形式,而没有具体操作。在各子类 继承了父类的抽象方法之后,再分别用不 同的语句和方法体来重新定义它,形成若 干个名字、返回类型和参数列表相同,目 的一致,但具体实现有一定差别的方法。15

第二部分 Java语言基础篇

抽象类的注意事项:(1)凡是用abstract修饰的类为抽象类, 用abstract 修饰的方法为抽象方法。 (2)抽象类中可以有一个或多个抽象方法,也可以包 含非抽象的方法。 (3)抽象方法的类必须是抽象类,它只能存在于其中。 (4)在抽象类中只能指定抽象方法名及其类型,而不 能书写其实现代码。 (5)抽象类可以派生子类,在其子类中必须实现抽象 类中定义的所有抽象方法。 (6)抽象类不能创建对象,创建对象由派生子类实现。 (7)若父类中已有某个抽象方法,则子类中就不能有 同名的抽象方法。16

第二部分 Java语言基础篇

使用final声明的类则不可有子类。 使用final修饰方法的功能是于内部语句 不能被更改的最终方法。 继承的特征总结(1)子类可以从父类那里继承所有非private的数据 成员和成员方法,以体现其共性; (2)在子类中也可以定义一些自己特有的数据成员 和成员方法,以体现其个性; (3)类之间的继承关系呈现为层次结构; (4)继承关系是传递的; (5)出于安全性和可靠性的靠路,Java仅支持单重 继承,而使用接口机制来实现多重继承。17

第二部分 Java语言基础篇

4.2.3 多态 多态是指一个类中具有相同名字 多个不同方法共存的情况。Java 提供了两种多态机制:

重载(overload)和覆盖(override)。

第二部分 Java语言基础篇

1. 重载 重载是指在同一个类中定义多个 同名而内容不同的成员方法。即 是一种对一个方法进行多次定义 的设计方法。这一思想在面向对 象程序设计中对所有的成员方法 都适用,包括构造方法(不包括 析构方法)。19

第二部分 Java语言基础篇

程序段4-10——创建一个显示学生姓名和平均成绩点数(GPA)程序

有四种情况:

(1)不知道姓名、GPA的学生对象;(2)知道姓名、不知道GPA的

学生对象;

(3)不知道姓名、知道GPA的学生对象;(4)知道姓名和GPA的学生对象。20

第二部分 Java语言基础篇

class Student { public String name; private double GPA; public Student() //无参构造方法定义 { this("无名氏",-1.0); } public Student(String _name) //有参构造方法定义 { this(_name,-1.0); } public Student(double _GPA) //有参构造方法定义 { this("无名氏",_GPA); } public Student(String _name, double _GPA)//有参构造方法定义 { name=_name; GPA=_GPA; } public void showStudent() { System.out.println("Student:"+name); if(GPA>=0.0) System.out.println("(GPA:"+GPA+ ")"); else System.out.println(); } } 21

本文来源:https://www.bwwdw.com/article/hed1.html

Top