Java语言教程:Java继承详情
小职 2017-12-13 来源 :网络 阅读 703 评论 0

摘要:Java语言教程之Java继承详情!继承是:新定义的类是从已有的类中获取属性和方法的现象。这个已有的类叫做父类, 从这个父类获取属性和方法的类叫做子类。

什么是继承(extends)?

Java语言教程之Java继承详情!继承是:新定义的类是从已有的类中获取属性和方法的现象。 这个已有的类叫做父类, 从这个父类获取属性和方法的类叫做子类。

ExtendsDemo1.java

?

/*什么是继承*/

public class ExtendsDemo1 {

    public static void main(String[] args) {

        Truck t = new Truck();

        t.size = 100;           //不建议这么写。初始化成员变量最好使用构造方法,或者提供set(), get()接口.

                                //货车类的一个实例t从汽车类从继承了size, color属性。

                                //而货车比汽车多一个货箱

    } 

}

 

 

class Car {                     //汽车

    int size;                   //车体大小

    String color;               //颜色

}

 

class Truck extends Car {       //货车

    String packingBox;          //货箱

}

   

继承的好处

1. 提高了代码的重用性

2. 让类和类之间产生了关系, 为多态创造了条件。

继承(extends)的格式 

?

   

class SubClass extends SuperClass {

 //执行语句;

}

   

super关键字

1. super关键字和this的用法相同

2. this代表本类引用, super代表父类引用

3. 当子类和父类出现同名成员的时候, 可以用super 和 this进行区分

SuperDemo.java

?

   

/* super的用法

 * 输出结果:

 * super.i = 10, this.i = 20

 */

public class SuperDemo {

    public static void main(String[] args) {

        new SubClass().showMessage();

    } 

}

 

 

class SuperClass {

    int i = 10;

}

 

class SubClass extends SuperClass {

    int i = 20;

 

    public void showMessage() {

        System.out.printf("super.i = %d, this.i = %d\n", super.i, this.i);

    } 

}

   

对从父类继承过来的方法进行重写(Override)

1. 当子类中出现与父类一模一样的方法(返回值, 函数名, 形参)时, 会出现重写(Override)操作.

OverrideDemo1.java

?


   

/* 怎么对从父类继承过来的方法进行重写(Override)

 * 输出结果:

 * SuperClass: I am good~

 * SubClass: I am excellent~~~

 */

public class OverrideDemo1 {

    public static void main(String[] args) {

        SubClass sc = new SubClass();

        sc.speak();

    } 

}

 

 

class SuperClass {

    public void speak() {

        System.out.println("SuperClass: I am good~");

    } 

}

 

class SubClass extends SuperClass {

    @Override                   //@Override表示下面出现的方法会出现重写操作,由编译器检查,如果达不到重写的条件,就会报错。一定程度上增加了代码的安全性

和健壮性

    public void speak() {

        super.speak();

        System.out.println("SubClass: I am excellent~~~");

    } 

}

   

2. 在对父类方法进行重写(Override)操作的时候,子类不允许出现与父类同名同参但是不同返回类型的方法.

OverrideDemo2.java

?


   

/* 子类中不允许出现与父类同名同参但是不同返回类型的方法

 * 出错信息:

 * OverrideDemo.java:20: error: f() in SubClass cannot override f() in SuperClass

 *  public int f() {

 *                 ^

 *                   return type int is not compatible with void

 *                   OverrideDemo.java:19: error: method does not override or implement a method from a supertype

 *                      @Override

 *                          ^

 *                          2 errors

 */

public class OverrideDemo2 {

    public static void main(String[] args) {

 

 

    } 

}

 

class SuperClass {

    public void f() {

 

    } 

}

 

class SubClass extends SuperClass {

    @Override

    public int f() {

        return 1;

    } 

}

   

3. 子类重写父类的方法的访问权限要大于或者等于父类中被重写的方法

OverrideDemo3.java

?


   

/* 子类重写父类的方法的访问权限要大于或者等于父类方法的访问权限

 * 出错信息:

 * OverrideDemo.java:18: error: f() in SubClass cannot override f() in SuperClass

 *  protected void f() {

 *                     ^

 *                       attempting to assign weaker access privileges; was public

 *                       1 error

 */

 

 

public class OverrideDemo3 {

    public static void main(String[] args) {

 

    } 

}

 

class SuperClass {

    public void f() {

    } 

}

 

class SubClass extends SuperClass {

    @Override

    protected void f() {            //把这里的访问权限改为public即可

 

    } 

}

   

访问控制符

访问控制符有:public, protected, default, private

有些需要一点包(package)的知识,所以等到讲包的时候再说.


本文由职坐标整理并发布,希望对同学们学习Java的知识有所帮助。了解更多详情请关注职坐标Java频道!

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

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

我知道了

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

请输入正确的手机号码

请输入正确的验证码

获取验证码

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

提交

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

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

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

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程