第二部分 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
正在阅读:
第二部分 Java语言基础篇06-08
八下思品第二单元(单元备课+课时教案)--唐玉洁 - 图文04-29
c语言单片机定时闹钟课程设计08-29
政府和社会资本合作(PPP)-重点采煤沉陷区综合治理项目实施方案(07-10
房地产营销全案框架13599209303-09
变分原理与变分法05-22
一年级语文上册期末试卷分析报告05-15
三国历史中的成语典故04-09
重庆理工大学机械原理试卷201-20
世界高层建筑发展历史及发展趋势05-17
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 语言基础
- 部分
- Java