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

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. tomcat 开机后台运行

    引用:http://jingyan.baidu.com/article/a65957f4b12b8724e77f9b5a.html Tomcat是Apache 软件基金会(Apache Softwar ...

  2. Linux字符界面安装VMware tools

    以往用VMware虚拟机都是装的桌面版,无奈实验室电脑属于老爷机,跑桌面linux实在有点吃不消,只能装个Basic Server玩玩了... 在桌面环境下装VMwaretools很简单,直接点击VM ...

  3. JAVA 学习随笔 : JDK Enhancement Process JEP process

    是时候寻找一个学习JAVA的路径了 ---- JDK Enhancement Process Oracle发布了JDK增强提案与路线图进程,目的在于鼓励OpenJDK提交者贡献点子和扩展以改进Open ...

  4. 剖析javascript全局变量和局部变量

    首先要记住: javascript是弱类型语言,它只有一种变量类型(var),为变量赋值时会自动判断类型并进行转换. 全局变量和局部变量如何声明? 全局变量声明: 第一种方式(函数外) var a; ...

  5. MVC模式

                             1.MVC的概念 1.1什么是MVC? MVC是一种架构型模式,它本身不引入新的功能,只是指导我们把web应用结构做的更加合理,实现逻辑与页面相分离. ...

  6. mysql数据库服务日志

    mysql数据库服务日志 ①. 错误日志:error_log ②. 普通日志:general_log ③. 慢查询日志:log-slow-query #有3个参数 分割:.mv .编写定时任务并执行: ...

  7. 【GO】GO语言学习笔记四

    流程控制 1.条件语句 举个栗子: if x>5 { return 1; }else{ return 0; } 注意:  条件语句不需要使用括号将条件包含起来(); 无论语句体内有几条语句, ...

  8. linq+映射数据库调用方法

      关于这一块.我在网上了解了很多.但是都没有找到自己想要的.通过各方面了解在linq 中调用映射的数据库函数以及存储过程方法如下. 1.传递对象参数//*注意:参数必须和你函数或者存储过程的参数一样 ...

  9. Css样式基础

    1.Css的语法 CSS的语法主要由两个部分组成,一个是选择器,一个是属性. 选择器又分为以下几种: 1.元素选择器:即Html标签去掉括号的就是元素 2.类选择器:所谓的类就是说class=“名称” ...

  10. 我的sql 记录

    ----------2017-01-03 21:56:56---------- --字符串分隔 start------------- use LDSQL GO CREATE function [dbo ...