【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 ...
随机推荐
- Win 播放器
先上图 主要包含的功能有: 打开播放文件, 暂停, 恢复, 停止, 设置声音大小, 设置进度, 获取当前播放进度, 时间进度 提供的源码, 主要采用DSPACK234这个控件 为提高解码的成功率最好先 ...
- uexWeiXin插件
uexWeiXin插件 接入指引 常用功能 接入指引 Android 准备一个应包名:平台默认包名:org.zywx.wbpalmstar.widgetone.uex加上应用id AppCan平台默认 ...
- Qt 工程 pro文件
工作中,感觉pro文件的有些内容真不太懂,现系统性的学习一下.于此备录,分享共勉. 为了更好的理解,先创建一个简单的工程作为实践. [1]创建一个pro文件 1.1 新建proDemo工程.步骤如下: ...
- Dom编程
Dom编程 Dom是一种用于HTML和XML文档的编程接口,是HTML页面的模型,将每个标签都做为一个对象,JavaScript通过调用DOM中的属性.方法就可以对网页中的文本框.层等元素进行编程控制 ...
- js使用模板快速填充数据
1.html <!DOCTYPE html> <html> <head> <title>模板标签</title> </head> ...
- sql server常用语法点
if exists(select name from sysobjects where name = 'stuInfo')drop table stuInfogocreate table stuInf ...
- ASP。net 之view
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Index.aspx.cs&qu ...
- Go语言语法汇总(转)
Go语言语法汇总 分类: 技术2013-09-16 14:21 3007人阅读 评论(0) 收藏 举报 go语言golang并发语法 目录(?)[+] 最近看了看GoLang,把Go语言的语法 ...
- css伪类的展现
常见的伪类选择器 :link :hover :active :visited 如果为以上几个伪类赋予相同css属性名,不同的css属性值 <!DOCTYPE html> <html ...
- 关于引用JS和CSS刷新浏览器缓存问题
有时候我们会碰到上线的新版本都要刷新一次缓存的问题.那是因为改了JS的内容,但是JSP引用的地方后面的字符串未发生改变导致浏览器读取浏览器缓存而不会重新加载新的JS内容,以下提供两种解决方式: 1.每 ...