面向对象的三大特征:封装,继承,多态

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基础】面向对象的三大基本特征之-------继承的更多相关文章

  1. Java基础-面向对象第三大特性之多态(polymorphism )

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  2. Java基础—面向对象的三大特性

    面向对象有三大特性分别是继承.封装和多态. (1)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类 ...

  3. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  4. java中的面向对象的三大基本特征

    转载,原文来自http://blog.sina.com.cn/s/blog_5f79a56a0100c6ig.html 众所周知,java中的面向对象的三大基本特征是:[封装].[继承].[多态] 一 ...

  5. java基础面向对象之类与对象

    java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...

  6. Java基础-面向对象第一特性之封装(Encapsulation)

    Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...

  7. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  8. java中面向对象的三大特性小结

    java中面向对象的三大特性:封装.继承.多态 封装 把抽象的数据和对数据的操作封装在一起,隐藏变量的实现细节.数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行访问. 1 ...

  9. 自学Python5.5-面向对象三大基本特征_继承

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

随机推荐

  1. hdu5714 拍照[2016百度之星复赛C题]

    由于船移动的速度都一样,那么对于往一个方向的船相对距离其实是不变的,我们可以把往一个方向移动的船都视作静止,并求出在哪些观测位置可以看到,很明显对于船[x,y,z],当x+z>=y-z的时候,可 ...

  2. git config 配置

    1. git config简介 我们知道config是配置的意思,那么git config命令就是对git进行一些配置.而配置一般都是写在配置文件里面,那么git的配置文件在哪里呢?互动一下,先问下大 ...

  3. Canvas: Out of system resources

    一个手写板的项目 在线程中操作Canvas画用户的笔记, 画不了几笔就卡住不画了, 然后保存到另外的image时 提示“Out of system Resource”错误, 百思不得姐 中间考虑是不是 ...

  4. Material Design Lite,简洁惊艳的前端工具箱 之 交互组件。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, 博客地址为http://www.cnblogs.com/jasonnode/ . 网站上有对应 ...

  5. MS CRM 2013 Plugin 注册工具登录后空白

    解决办法 把en-us, zh-CN 目录随便改个名字就好了

  6. DOM和DHTML等,复习总结

    DOM(Document Object Model),文件对象模型.HTML(HyperText Markup Language),超文本标记语言.HTML的超类:Node->Document: ...

  7. MaxScale:实现MySQL读写分离与负载均衡的中间件利器

    1. MaxScale 是干什么的? 配置好了 MySQL 的主从复制结构后,我们希望实现读写分离,把读操作分散到从服务器中,并且对多个从服务器能实现负载均衡. 读写分离和负载均衡 是MySQL集群的 ...

  8. 勇者斗恶龙UVa11292 - Dragon of Loowater

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=s ...

  9. MVC 缓存

    MVC  缓存 http://blog.zhaojie.me/2009/09/aspnet-mvc-fragment-cache-1.html redis http://www.cnblogs.com ...

  10. JS事件

    JS事件:  声明:为了事件对象event跨浏览器兼容: var oEvent==ev||event;      所以在下面用到 event 的地方都用 oEvent 代替  1)doucument的 ...