JAVA语言继承学习之类、超类和子类实例讲解
小标 2019-01-09 来源 : 阅读 1420 评论 0

摘要:本文主要向大家介绍了JAVA语言继承学习之类、超类和子类实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言继承学习之类、超类和子类实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


继承其实在生活中到处都是例子,比如哪个富豪去世了,然后他的子女继承了他的财产啊,或者是有人说你跟你爸或者你妈长得像等等,,都是继承,而在java中的继承,其实是为了减少代码的数量,而重复使用了其上一个类的域(其实就是代码)。所以说继承可以提高代码的重用性,使代码的编码效率得到提高。


说了这么多,相信大家已经知道了继承是什么意思了,于是下面就来演示如何定义和使用继承。


呃。。。首先给个博文的主要内容吧


首先是最基本的-->就是如何定义子类,然后在子类中重载超类的函数,最后就是如何定义子类的构造函数


然后介绍一下多态(很重要哦)-->如何使用


然后介绍一下抽象类-->如何定义和使用


然后就介绍一下受保护的访问(protected关键字)-->如何使用


最后再给出一些注意事项。


(1)定义子类...enmmmmm...使用extends关键字,没什么好说的(手动滑稽)。


代码示例:


package Inheritance;

 

public class InheritanceTest {

    public static void main(String[] args) {

        b x=new b();

        if(x instanceof a) {

            System.out.println("b是a的子类");

        }

    }

}

 

class a{

     

}

 

class b extends a{

     

}

   



运行结果:




(2)重载超类函数。。。在子类中定义和超类一样的名字的函数,并重新书写其中代码:


代码示例:


package Inheritance;

 

public class InheritanceTest {

    public static void main(String[] args) {

        a x1=new a();

        b x2=new b();

        x1.showInformation();

        x2.showInformation();

    }

}

 

class a{

    public void showInformation() {

        System.out.println("我是a");

    }

}

 

class b extends a{

    public void showInformation() {

        System.out.println("我是b");

    }

}

   



运行结果:




(3)子类构造函数中,首先执行超类构造函数,如果没有显式执行超类带参构造函数,则自动执行超类无参构造函数,若超类无无参构造函数,则出错,然后执行其余语句。


代码示例:


package Inheritance;

 

public class InheritanceTest {

    public static void main(String[] args) {

        a x1=new a(1);

        b x2=new b(1,2);

        System.out.println(x1.getA());

        System.out.println(x2.getA()+" "+x2.getB());

    }

}

 

class a{

    private final int a;

     

    public a(int aA) {

        a=aA;

    }

     

    public int getA() {

        return a;

    }

}

 

class b extends a{

     

    private final int b;

     

    public b(int aA,int aB) {

        super(aA);

        b=aB;

    }

     

    public int getB() {

        return b;

    }

}

   



运行结果:




(4)由一个公共超类派生出来的所有类的集合被称为继承层次,在继承层次中,从某个特定的类到其祖先的路径被称为该类的继承链。


(5)多态是可以使用基类指针引用子类对象,但只能使用基类中的方法?也可以将基类引用强制转换为子类引用,但是一定要保证基类引用原来是引用的子类或者子类的子类。


代码示例:


package Inheritance;

 

public class InheritanceTest {

    public static void main(String[] args) {

        a x1=new b(1,2);

        System.out.println(x1.getA());

        b x2=(b)x1;

        System.out.println(x2.getA()+" "+x2.getB());

    }

}

 

class a{

    private final int a;

     

    public a(int aA) {

        a=aA;

    }

     

    public int getA() {

        return a;

    }

}

 

class b extends a{

     

    private final int b;

     

    public b(int aA,int aB) {

        super(aA);

        b=aB;

    }

     

    public int getB() {

        return b;

    }

}

   



运行结果:




(6)阻止继承-使用关键字final:


final放在类声明前---防止其他类继承该类。


final放在函数声明前---防止该类子类重定义此方法。


代码示例:


package FinalTest;

 

public class AFinalTest {

 

    public static void main(String[] args) {

        b x1=new b();

        x1.showInformation();

    }

}

 

class a{

    public final void showInformation() {

        System.out.println("可能是A");

    }

}

 

final class b extends a{

     

}

   



代码示例:




(7)抽象类--抽象类中可以定义包含具体数据和方法,也能声明一些方法而不定义


扩展一个抽象类有两种选择,一种扩展后定义部分超类抽象类中没有的定义的方法,这样子类依旧是抽象类,


另一种就是全部定义超类抽象类的方法,这样子类就不再是抽象类了。


但是抽象类不可以被实例化


代码示例:


package AbstractTest;

 

public class AAbstractTest {

 

    public static void main(String[] args) {

        System.out.println(new Woman().getDescription1());

        System.out.println(new Woman().getDescription2());

    }

 

}

 

abstract class Person{

    String name;

    public String getName() {

        return name;

    }


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved