【java基础】面向对象的三大基本特征之-------继承
面向对象的三大特征:封装,继承,多态
java通过extends关键字来实现继承,而且是单继承,一个子类只可以有一个直接父类,但是父类还可以有父类...
java.long.Object是所有类的父类,如果一个类没有声明继承于谁,那么默认就是继承于java.long.Object类
通过继承,子类可以获得父类的全部的属性和方法,同时进行拓展。
代码示例:
package extendss; /**
* 类的继承演示代码
* 这是一个父类 train 火车类
* 默认继承于Object类
*
* */
public class Train { //属性
private String trainsNum;//火车编号 private String trainsCount;//火车数量 private String trainsType;//车厢类型 //方法
//因为我自己在封装的时候有点迷...
//所以写了两个方法,想解决一点疑惑
//在自己的方法内调用自己的属性
//不需要通过get方法...
public void speakInfo1(){
System.out.println(this.getTrainsNum() + "列车是由" + this.getTrainsCount() + "节"
+ this.getTrainsType() + "型车厢组成的");
} public void speakInfo2(){
System.out.println(trainsNum + "列车是由" + trainsCount + "节"
+ trainsType + "型车厢组成的");
} /**----------get/set方法------------**/ public String getTrainsNum() {
return trainsNum;
} public void setTrainsNum(String trainsNum) {
this.trainsNum = trainsNum;
} public String getTrainsCount() {
return trainsCount;
} public void setTrainsCount(String trainsCount) {
this.trainsCount = trainsCount;
} public String getTrainsType() {
return trainsType;
} public void setTrainsType(String trainsType) {
this.trainsType = trainsType;
} }
package extendss;
/**
* 这是子类 客运列车类
* 继承于 Train类
* */
public class PassengerTrain extends Train { //暂时是空方法 public static void main(String[] args) {
//因为继承了Train类,所以,即使方法是空的,也可以使用父类中的方法
PassengerTrain pt = new PassengerTrain();
//给属性赋值
pt.setTrainsCount("18");
pt.setTrainsNum("K8359/k8360");
pt.setTrainsType("25T");
//调用方法
pt.speakInfo1(); //K8359/k8360列车是由18节25T型车厢组成的
pt.speakInfo2(); //K8359/k8360列车是由18节25T型车厢组成的
}
}
即使子类是个空类 也可以通过继承父类 获取属性和方法~~
子类重写父类的方法
子类在拓展父类的属性和方法的同时,也可以对父类中不适用的方法进行重写,但必须是与父类方法方法名相同,形参列表也要相同
子类重写了父类的方法,此时,再想使用父类中的方法,可以通过关键字super调用...
对于static修饰的类方法,则可以直接使用父类名调用。
代码示例
package extendss;
/**
* 这是子类 客运列车类
* 继承于 Train类
* */
public class PassengerTrain extends Train { //拓展的属性
private String Trainload;//载客量 //重写父类中的方法
public void speakInfo1(){
System.out.println(this.getTrainsNum() + "列车是由" + this.getTrainsCount() + "节"
+ this.getTrainsType() + "型车厢组成的,一共可以乘坐" + Trainload + "位乘客");
}
//super调用父类中的方法
public void speakInfoFU(){
super.speakInfo1();
} public static void main(String[] args) {
//因为继承了Train类,所以,即使方法是空的,也可以使用父类中的方法
PassengerTrain pt = new PassengerTrain();
//给属性赋值
pt.setTrainsCount("18");
pt.setTrainsNum("K8359/k8360");
pt.setTrainsType("25T");
//调用方法 这里先注释了
//pt.speakInfo1();
//pt.speakInfo2();
/*------------------------------*/ //给拓展的属性赋值
pt.Trainload = "2056"; //调用子类重写的方法
pt.speakInfo1(); // K8359/k8360列车是由18节25T型车厢组成的,一共可以乘坐2056位乘客
//调用父类原有方法
pt.speakInfoFU(); //K8359/k8360列车是由18节25T型车厢组成的
}
}
车次是真的...车型也是真的...乘客数是按定员118 餐车50算的...纯属娱乐~~
子类利用super调用父类的构造函数
在子类的构造函数中 可以利用super调用父类的构造函数,但是利用super调用父类构造函数必须出现在子类构造函数的第一行。
代码示例:
package superss;
/**
* 父对象
*
* */
public class Fu { //构造函数
public Fu(){
System.out.println("父对象里的无参构造函数");
} public Fu(String A1){
this();
this.A1 = A1;
System.out.println("父对象里的带一个参数的构造函数");
} public Fu(String A1,String A2){
this(A1);
this.A2 = A2;
System.out.println("父对象里的带辆个参数的构造函数");
} //定义属性
public String A1; public String A2; }
package superss;
public class Zi extends Fu {
//定义构造函数
public Zi (String A1,String A2,String A3) {
//调用父类构造函数
super(A1, A2);
this.A3 = A3;
System.out.println("子类中的构造函数");
}
//定义属性
public String A3;
//定义方法
public void info(){
System.out.println("子类中的方法");
}
public static void main(String[] args) {
System.out.println("----------");
Zi zi = new Zi("A1", "A2", "A3");
System.out.println("----------");
zi.info();
}
//运行结果:
//----------
//父对象里的无参构造函数
//父对象里的带一个参数的构造函数
//父对象里的带辆个参数的构造函数
//子类中的构造函数
//----------
//子类中的方法
}
创建对象总是从该类所在继承树最顶层构造器开始执行,然后依次向下执行,最后执行本类构造器,某个父类通过this调用了同类中的其他构造函数,就会依次执行该父类的多个构造函数
【java基础】面向对象的三大基本特征之-------继承的更多相关文章
- Java基础-面向对象第三大特性之多态(polymorphism)
Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...
- Java基础—面向对象的三大特性
面向对象有三大特性分别是继承.封装和多态. (1)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类 ...
- Java基础-面向对象第二特征之继承(Inheritance)
Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...
- java中的面向对象的三大基本特征
转载,原文来自http://blog.sina.com.cn/s/blog_5f79a56a0100c6ig.html 众所周知,java中的面向对象的三大基本特征是:[封装].[继承].[多态] 一 ...
- java基础面向对象之类与对象
java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...
- Java基础-面向对象第一特性之封装(Encapsulation)
Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...
- 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点
前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...
- java中面向对象的三大特性小结
java中面向对象的三大特性:封装.继承.多态 封装 把抽象的数据和对数据的操作封装在一起,隐藏变量的实现细节.数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行访问. 1 ...
- 自学Python5.5-面向对象三大基本特征_继承
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
随机推荐
- MS SQL 两种分页
------ row number ---------- ------ row number ---------- declare @pageSize int,@pageIndex int ; sel ...
- Application Engine
Exit(1) : Terminate the AE immediately and rollback all DB changes madeexit(0) : Terminate the AE im ...
- DarkStone - 跨平台移动应用开发之 Flex 的崛起
我的好友Ds 发布一个flex的消息.我帮忙转发 DarkStone - 跨平台移动应用开发之 Flex 的崛起 (2013-08-20 22:28:32) 此文章由 周戈 (DarkSton ...
- CI(持续集成)CD(持续交付)
持续集成实践: 1.保持单一代码仓库 2.自动化构建项目 3.使项目拥有自测试的能力 4.成员每天上传代码 5.每次上传需要在集成机上构建主线项目 6.立即修复出错的构想流程 7.保证构建效率 8.将 ...
- 解决Window Azure: Failed to start Development Storage: the SQL Server instance ‘localhost\SQLExpress’ could not be found.
运行Window Arzure 项目,报如下错误: Windows Azure Tools: Failed to initialize Windows Azure storage emulator. ...
- js 函数总结
函数的基本语法如下所示: function functionName(arg0, arg1,...,argN) { statements } 函数如果有返回值则return 后的语句将不会被执行,返回 ...
- Spring Batch学习笔记三:JobRepository
此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch Job在运行时有很多元数据,这些元数据一般会被保存在内存或者数据库中,由于Spring Batch在默认配置是使用H ...
- Windows Azure Storage 之 Retry Policy (用来处理短暂性错误-Transient Fault)
在使用Windows Azure Storage Service 的时候, 通常会遇到各种各样的问题. 例如网络连接不稳定,导致请求没有发出去.删除一个Blob Container 之后又立刻创建同名 ...
- qt qml fuzzyPanel 毛玻璃效果
毛玻璃效果,用qml来写代码真是简短,大爱qml:) [下载地址]http://download.csdn.net/detail/surfsky/8426641 [核心代码] Rectangle{ c ...
- winfrom 文字滚动
winfrom 文字滚动 http://www.codeproject.com/Articles/6913/Creating-a-professional-looking-GDI-drawn-cust ...