继承性是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

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

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

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

Java中的继承性特性的更多相关文章

  1. Java中的三大特性 - 超详细篇

    前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的三大特性 - 超详细篇>,希望对大家有帮助,谢谢 这一节的内容可能有点多,大家可以选择性的来看 简介 Java的三大特性:封装.继 ...

  2. Java中数组的特性

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...

  3. Java 中的三大特性

    我们都知道 Java 中有三大特性,那就是继承 ,封装和多态 .那我今天我就来说说这几个特性 . 老样子 ,先问问自己为什么会存在这些特性 .首先说封装 ,封装就是使用权限修饰符来实现对属性的隐藏 , ...

  4. Java中面向对象三大特性之继承

    1. 继承的概述 继承就是子类继承父类的变量和方法,下面用代码解释一下: class Student {// 定义学生类 String name; int age; void study() { Sy ...

  5. java中的三大特性

    java的三大特性是封装.继承.多态: 继承是OOD(面向对象设计)为了更好的建模,编程的时候是OOP(面向对象编程)提高代码的复用性.这里有个注意点:一个类只有一个直接的父类,但不是只有一个父类. ...

  6. java中interface 的特性

    有时必须从几个类中派生出一个子类,继承它们所有的属性和方法.但是,Java不支持多重继承.有了接口,就可以得到多重继承的效果. 接口(interface)是抽象方法和常量值的定义的集合.从本质上讲,接 ...

  7. Java中面向对象三大特性之——多态

    多态的概述:  多态是继封装.继承之后,面向对象的第三大特性. 生活中,比如跑的动作,小猫.小狗和大象,跑起来是不一样的.再比如飞的动作,昆虫.鸟类和飞机,飞起来也是不一样的.可见,同一行为,通过不同 ...

  8. Java中的三大特性:封装、继承、多态

    封装: 概念:封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问,适当的封装可以让代码更容易理解与维护,也加强了代码的安全性. 原则:将属性隐藏起来,若需要访问某个属性,提供公共方法对 ...

  9. Java中面向对象三大特性之——继承

    继承的概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可. 现实生活中继承:子承父业,用来描述事物之间的关系 代码中继承:就是用 ...

随机推荐

  1. PHP----SAPI

    SAPI:Server Application Programming Interface 服务器端应用编程端口.它就是PHP与其它应用交互的接口,PHP脚本要执行有很多种方式,通过Web服务器,或者 ...

  2. JavaScript 值类型和引用类型的初次研究

    今天遇到一个坑,具体的不多说,直接上代码 var a = [ [],[],[1,2,3] ] var b = ['颜色','大小','尺寸'] var arr = [] for(let i = 0; ...

  3. Java Swing intro

    Java Swing intro 如果有Android app开发经验,快速上手Swing不是问题.UI方面有相似的地方. 简单的几行代码就能抛出一个框框,记录一下操作过程 1.先显示一个框框 Era ...

  4. 什么是B-Tree

    B-Tree就是我们常说的B树,一定不要读成B减树,否则就很丢人了.B树这种数据结构常常用于实现数据库索引,因为它的查找效率比较高. B-Tree与二叉查找树的对比 我们知道二叉查找树查询的时间复杂度 ...

  5. phpstudy连接SQL Server 2008数据库 以及 php使用sql server出现乱码解决方式

    开始也尝试自己配置php安装环境,找到一个详细的百度经验http://jingyan.baidu.com/article/154b46315242b328ca8f4101.html,前面有问题也一一去 ...

  6. 用java写一个用户登陆界面

    一.课堂测试源代码及其结果截图 用java的swing写一个用户登录界面,采用网格布局.源代码如下: /** * */package LiuLijia; import java.awt.CardLay ...

  7. Vue学习-01

    1.vue 学习 v-bind:title 数据绑定 v-if 判断显示或者隐藏 <div id="app-3"> <p v-if="seen" ...

  8. NYOJ--95--multiset--众数问题

    /* Name: NYOJ--95--众数问题 Date: 20/04/17 16:02 Description: multiset水过 */ #include<set> #include ...

  9. Python数据可视化Matplotlib——Figure画布背景设置

    之前在今日头条中更新了几期的Matplotlib教学短视频,在圈内受到了广泛好评,现应大家要求,将视频中的代码贴出来,方便大家学习. 为了使实例图像显得不单调,我们先将绘图代码贴上来,此处代码对Fig ...

  10. 安徽省2016“京胜杯”程序设计大赛_B_阵前第一功

    阵前第一功 Time Limit: 1000 MS Memory Limit: 65536 KB Total Submissions: 63 Accepted: 29 Description A国每个 ...