【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 ...
随机推荐
- 用自己赚的钱第一次坐飞机 那feel倍儿爽
马年春晚上,歌手大张伟的神曲<倍儿爽>如今已传遍大街小巷.其实,不管人家到底有没有炒作,能让我们这些观众感觉到放松.乐呵,那就是一个成功的春晚节目.而今年,我也如同这歌中唱的一样,活得倍儿 ...
- struts 国际化
国际化 1. 国际化与本地化 国际化 (Internationalization: I18N): 是程序在不做任何修改的情况下,就可以再不同的国家或地区和不同的语言环境下,按照当地的语言和格式习惯显示 ...
- Hash工具下载地址
因为经常要在非常用电脑使用,这里放一个链接,方便下载: http://files.cnblogs.com/files/cxun/Hash.zip HASH计算工具,可计算MD5.SHA-1.CRC32 ...
- Java开发环境的配置与Hello World
一.Java开发需要做的准备 Java程序的执行过程是首先由Java编译器将以.java为后缀的Java源文件编译成.class字节码文件.然后字节码文件便可以由JVM虚拟机进行加载并执行. 在初学J ...
- 使用MacBook Air的4项基本技巧
MacBook Air可以说是笔记本电脑中的翘楚:性能优异.拥有超长的电池使用时间的同时保持了轻盈的体态.纤薄的外形,这几乎满足了人们对笔记本的所有要求.如果你也是一个MacBook Air用户,不妨 ...
- npm 安装远程包(github的)
npm install git+ssh://git@github.com:xxx/xxx.git#master --save-dev npm install git+ssh://git@github. ...
- linux系统一键安装phpstudy的lnmp环境
phpStudy for Linux 支持Apache/Nginx/Tengine/Lighttpd, 支持php5.2/5.3/5.4/5.5切换 已经在centos-6.5,debian-7.4. ...
- C语言 结构体指针赋值 incompatible types when assigning to type 'char[20]' from type 'char *'
strcpy(pstudent->name, "guo zhao wei "); 为什么错误,该怎么写,(红色行) 追问 为什么不能直接赋值啊, 追答 用char n ...
- 常用SQL总结
数据库知识总结一.数据库服务器设置1,查看数据库服务器编码 show variables like 'character%';2,设置数据库服务器编码 set character_set_ ...
- js阻止form表单重复提交
防止表单重复提交的方法总体来说有两种,一种是在js中阻止重复提交:另一种是在后台利用token令牌实现,大致思路是生成一个随机码放到session和form表单的隐藏输入框中,提交表单时两者对比,表单 ...