Java中的继承性特性

  继承性是java中的第二特性之一。而继承性最为关键的地方为:代码重用性的问题,利用继承性可以从已有的类中继续派生出新的子类,也可以利用子类扩展出更多的操作功能。

  继承性的实现代码为:class 子类  extends  父类{ }

  有以下3点说明:

  1、对于extends而言,需要不断的开展开来,但是为了理解上的方便,这些统一称之为:继承;

  2、子类又称之为派生类;

  3、父类又称之为超类(Super class);

以下代码为子类继承父类的属性及方法

class Person{
  private String name;
  private int age;

  public Person() {}
  public Person(String name,int age){
    this.name = name;
    this.age = age;
  }

  public void setName(String name){
    this.name = name;
  }
  public void setAge(int age){
    this.age = age;
  }

  public String getName(){
    return this.name;
  }
  public int getAge(){
    return this.age;
  }
  }
}
  class Student extends Person {
   private String school;
   public void setSchool(String school){
    this.school = school;
  }
  public String getSchool(){
    return this.school;
  }
}

  public class School{
  public static void main(String args[]){
    Student stu = new Student();
    stu.setName("zhangsan");
    stu.setAge(123);
    stu.setSchool("大学");
    System.out.println("名字" + stu.getName() + ",年龄" + stu.getAge()+ stu.getSchool());
  }
}

从这中间可以得到以个结论:

  子类在实际中的运用中,是将父类定义得更加具体化的一种手段。

 

在继承的使用中,有三大限制,这些在实际的运用及编写代码的时候需要多加注意:

一、继承不可以多重继承,但是可以多层继承。

子类与父类的使用如下:

class A{
  public void fun(){
    System.out.println("这就是A");
  }
}
class B extends A{
  public void fun(){
    System.out.println("这就是B");
  }
}
class C extends A{
  public void fun(){
    System.out.println("这就是C");
  }
}
class New1{
  public static void main(String args[]){
    B b1 = new B();
    b1.fun();
    C c1 = new C();
    c1.fun();
  }
}

二、在子类在继承父类时,严格来说会继承中,但是在父类多有的私有操作属于中称之为隐形继承。所有的非私有操作属于显示属性。

class A {

         private String msg;

         public void setMsg(String msg) {

             this.msg = msg;

         }

         public String getMsg() {

             return this.msg;

         }

}

class B extends A {                                                                // 继承自A类

}

public class Demo {

public static void main(String args[]) {

             B b = new B();

             b.setMsg("Hello");                                         // 设置msg属性,属性通过A类继承

             System.out.println(b.getMsg());   // 通过子类对象取得msg属性

  }

}

三、在子类构造前一定会默认调用父类的构造(默认使用无参构造),以保证父类的对象先实例化,子类对象后实例化。

观察实例化对象操作:
class A {
  public A() { // 父类提供的无参构造方法
    System.out.println("A、A类的构造方法!");
  }
}
class B extends A { // B是子类继承父类A
  public B() { // 定义子类的构造方法
    System.out.println("B、B类的构造方法!");
  }
}
public class Demo {
  public static void main(String args[]) {
    new B(); // 实例化子类对象
  }
}

子类隐含语句:
class B extends A { // B是子类继承父类A
  public B() { // 定义子类的构造方法
  super() ; // 父类中有无参构造时加与不加无区别,如果编写则必须出现在首行
  System.out.println("B、B类的构造方法!");
}

父类不提供无参构造方法:
class A {
  public A(String title) { // 父类提供的有参构造方法
    System.out.println("A、A类的构造方法,title = " + title);
  }
}
class B extends A { // 定义子类B
  public B(String title) { // 子类提供有参构造
    super(title); // 明确调用父类构造,否则将出现编译错误
    System.out.println("B、B类的构造方法!");
  }
}
public class Demo {
  public static void main(String args[]) {
    new B("Hello"); // 实例化子类对象
  }
}

 

方法覆写:

特产主要特征:子类可以根据父类已有的功能进行功能的扩展,但是在子类定义属性或方法时,可以出现定义的属性或方法与父类同名的情况,这样的操作成为覆写。

class A {

         public void fun() {          // 在父类中定义的方法

                   System.out.println("A类中的fun()方法。") ;

         }

}

class B extends A {                           // 定义子类,此时没有覆写任何方法

         public void fun() {          // 此处为覆写

                   System.out.println("B类中的fun()方法。") ;

         }

}

class C extends A {

         public void fun() {          // 此处为覆写

                   System.out.println("C类中的fun()方法。") ;

         }

}

public class TestDemo {

         public static void main(String args[]) {

                   B b = new B() ;              // 实例化子类对象

                   b.fun() ;                         // 调用fun()方法,此时方法被覆写,所以调用被覆写过的方法

                   C c = new C() ;              // 实例化子类对象

                   c.fun() ;                          // 调用fun()方法,此时方法被覆写所以调用被覆写过的方法

         }

}

 

 

方法重载与重写的区别

区别     重载          覆写

英文单词  Overloading         Override

发生    发生在一个类里面   发生在继承关系中

定义    方法名称相同、参数  方法名称相同、参数类型、个数相同、方法返回值相同

        的类型及个数不同

极限    没有权限的限制    被覆写的方法不能拥有比父类更为严格的访问控制限制

 

区别    this                        super

功能    调用本类构造,本类方法,本类属性        子类调用父类构造,父类方法,父类属性

形式    先查找本类中是否存在有指定的调用结构,     不查找子类,直接调用父类操作

特殊    表示本类的当前对象               空

 

转载于:https://www.cnblogs.com/Zhuoshengda/p/7255805.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10大html5前端框架

Bootstrap 首先说 Bootstrap,估计你也猜到会先说或者一定会有这个( 呵呵了 ),这是说明它的强大之处,拥有框架一壁江山的势气。自己刚入道的时候本着代码任何一个字母都得自己敲出来挡我者废的决心,来让自己成长。结果受到周围各 种…

多媒体技术复习汇总 收藏

多媒体技术复习汇总 收藏 1. 什么是媒体:媒体是信息表示和传输的载体。2. 媒体分类:感觉媒体,表示媒体,表现媒体,存储媒体,传输媒体3. 多媒体技术的定义和特点:多媒体技…

PHP中的语法特点小结

PHP中的语法特点小结 1.PHP的变量开头要加上$符号,见到$就知道这个是一个变量 2.PHP中的常量才是不用加$符号的 3.PHP中$可以用来嵌套使用,从而实现动态的变量名的层级调用 4.PHP程序<?php开头,结尾可以加上?>,也可以不加 5.PHP中的常量有着魔术常量(系统自带的) 6.PH…

滚动行为

new router({ scrollBehavior (to, from, savaPosition) { if(savePosition) { //历史记录的前进后退记住的之前滚动到的位置 return savePosition } else { return {x: 0, y: 0} } //history模式下 定位到某个元素失效的解决办法 if(to.hash) { return { selector: to.h…

使用FFMPEG SDK解码流数据获得YUV数据及其大小

本文以H264视频流为例&#xff0c;讲解解码流数据的步骤。 为突出重点&#xff0c;本文只专注于讨论解码视频流数据&#xff0c;不涉及其它&#xff08;如开发环境的配置等&#xff09;。如果您需要这方面的信息&#xff0c;请和我联系。 准备变量 定义AVCodecContext。如果您…

关于Python3.7和Python3.6中元组类型数据内存存储问题

关于Python3.7和Python3.6中元组类型数据内存存储问题 小编最近发现了一个瑕疵 当定义一个元组类型的变量后,若在程序后面再定义一个元组变量,这两个元组的内容相同,那么在不同的版本中会出现不同的结果 在Python3.6版本中,解释器将在内存中开辟两个内存空间分别存储两个元组的…

shell 删除了hdfs 文件_从零开始学大数据(三) Shell操作HDFS文件系统-中

1、格式化[rootmaster sbin]# hdfs namenode -format2、命令hdfs dfsadmin查看(hdfs dfsadmin -report)[rootmaster ~]# hdfs dfsadmin -report安全模式#获取安全模式状态[rootmaster ~]# hdfs dfsadmin -safemode get#进入安全状态[rootmaster ~]# hdfs dfsadmin -safemode en…

计算机硬件

计算机硬件 一、为什么要学习计算机基础 程序员编程的本质就是让计算机去工作&#xff0c;而编程语言就是程序员与计算机沟通的介质。程序员要想让计算机工作&#xff0c;就要知道计算机能干什么、是怎么样的一个完成过程&#xff0c;这也是我们必须学习计算机基础的原因。 …

当编程作为一种爱好

一、当编程作为一种爱好&#xff0c;时刻关心一段代码如何实现。 二、当把工具操作得足够熟悉&#xff0c;闭眼即能达到代码述写的规范。 三、程序呀&#xff0c;如果爱上你是我的错&#xff0c;我打算一错到底。转载于:https://www.cnblogs.com/spiriter88/p/6913539.html

Python中的函数概述

1.python中函数概述 概念 模块化编程的思想 有组织,可共享(重复使用,实现特定的功能的代码块) 提高程序的可维护性,提高开发效率,提高代码的重用性定义一个函数 1.语法:def 函数名称(形参列表):函数体/代码块return 返回值 2.定义参数介绍 def :关键字 用于函数的定义,函数的…

铁路售票系统_铁路资讯:复兴号动车、智能京张高铁…中国最高端铁路装备看这里...

今天上午&#xff0c;两年一度的中国国际现代化铁路技术装备展在京开展&#xff0c;会期3天&#xff0c;将集中展示路网建设、客货运输、经营管理、工程建造、技术装备、旅客服务等铁路行业各领域的先进产品及技术。展会现场智能京张&#xff1a;将首次实现时速350公里自动驾驶…

H.264的NALU,RTP封包说明(转自牛人)

H.264 RTP payload 格式 H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) NALU 头由一个字节组成, 它的语法如下: --------------- |0|1|2|3|4|5|6|7| -------- |F|NRI| Type | --------------- F: 1 个比特.forbidden_zero_bit. 在 H.264 规…

CentOS下安装MySQL报安装文件conflicts错误:

2019独角兽企业重金招聘Python工程师标准>>> 第一&#xff1a;报这个错误&#xff0c;说明已经安装或相关文件已经存在&#xff0c;把已经存在的文件卸载了就可以了&#xff1a; rpm -e --nodeps mysql-libs-5.1.* 转载于:https://my.oschina.net/u/3197158/blog/1…

inc指令是什么意思_西门子PLC一些指令

指令(英文全称意思)∶指令含义1、LD ( Load装载):动合触点2、LDN (Load Not不装载):动断触点3、A(And与动合):用于动合触点串联4、AN (And Not与动断):用于动断触点串联5、o(Or 或动合):用于动合触点并联6、ON(Or Not 或动断):用于动断触点并联7、(Out输出):用于线圈输出8、OLD…

python核心,内建函数,高阶函数

晨测 global和nonlocal区别 写一个递归的阶乘回顾 1.global和nonlocal 关键字 2.函数的递归 1.查找规律 2.设置退出条件 3.性能 3.闭包 外函数中定义一个内函数 外函数的返回值是内函数的引用 内函数引用外函数的变量,未来外函数执行完毕,不会释放被内函数引用变量 4.总结 1.…

对h.264压缩视频码流中i帧的提取(firstime)

这个问题要说清楚还是有点复杂&#xff1a;首先判断 NALU 类型是否是 5&#xff0c;如果是&#xff0c;那么以后连续出现的 NALU 类型为 5 的 NALU 就属于 IDR 帧&#xff08;一种特殊的 I 帧&#xff09;&#xff1b;如果 NALU 不是 5&#xff0c;则要进一步判断 slice_type 是…

hadoop fs 运维常用的几个命令

FS Shell调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式。 所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://authority/path。对HDFS文件系统&#xff0c;scheme是hdfs&#xff0c;对本地文件系统&#xff0c;scheme是file。其中scheme和auth…

touchesEnded不响应

为什么80%的码农都做不了架构师&#xff1f;>>> http://blog.csdn.net/assholeu/article/details/16363241 touchesEnded不响应主要存在以下几种情况 case 1 : userInteractionEnabled 部分控件如UIImageView&#xff0c;userInteractionEnabled默认为NO&#xff0…

python request对四类参数的处理_如何处理Djang中同一参数具有多个变量的request.GET...

在Django视图中&#xff0c;您可以访问request.GET[variablename]&#xff0c;因此在您的视图中&#xff0c;您可以执行如下操作&#xff1a;myvar request.GET[myvar] 实际的request.GET[myvar]对象类型是&#xff1a; 现在&#xff0c;如果要传递具有相同参数名的多个变量&a…

nonlocal和global关键字

回顾: 1. Python的函数的概述函数定义函数调用2. Python函数中参数的类型和返回值形参和实参形参类型:普通参数: 实参的传递的顺序和个数和形参一直关键字参数: 指定传递的实参被特定形参接收默认参数: 形参中设定当前参数的默认值可以不传递设定了默认参数的实参不定长参数:一…