21- 继承的基本知识

继承的主要作用:抽取共性

对于一个已经使用了的类,最好不要修改,推荐定义一个新的类,来重复利用其中的共性内容,并且添加改动内容。

定义父类格式:(这里假设父类没有更上层的父类)
 

public class 父类名称

{
    ...
}

定义子类格式:

public class 子类名称 extends 父类名称{
...
}

一、在父子类继承关系当中,如果成员变量重名,则创建子类对象时,有两种访问方式:

1、直接通过子类对象访问成员变量,等号左边是谁,优先用谁,没有则向上找。

2、间接通过成员方法访问成员变量,该方法属于谁,就优先用谁,没有则向上找。

//Father.java
public class Father {
    int faNum = 10;
    int num = 11;

    public void method()
    {
        System.out.println("父类method!");
    }
}

//Son.java
public class Son extends Father{
    int sonNum = 20;
    int num = 21;
}

//DemoExample.java
public class DemoExample {
    public static void main(String[] args) {
        Son one = new Son();

        System.out.println(one.sonNum);//子类独有,用子类
        System.out.println(one.faNum);//子类没有,向上找父类
        System.out.println(one.num);//父类、子类都有,由于等号左边是子类,所有使用子类

        Father two = new Father();
        System.out.println(two.num);//等号左边是父类的,所以使用父类
    }
}

二、在子类的方法中,如果存在局部变量、子类成员变量、父类成员变量同名时,如何使用?

局部变量:     直接写局部变量名

本类的成员变量: this.成员变量名

父类的成员变量:super.成员变量名

三、在父子类继承关系当中,创建子类对象,访问成员方法的规则:

创建的对象时谁(new的是谁),就优先使用谁的方法,如果子类没有该方法就向上找父类看有没有。

四、在父子类继承关系中,关于方法重写注意事项

1、子类可以重写(override)父类的方法,但是需要名称一样,参数列表一样。

2、在子类的重写方法前面最好加@override,这样可以防止重写方法写错告警。

3、子类的返回值必须【小于等于】父类的返回值范围

小扩展:java.lang.object类时所有类的公共最高父类,java.Lang.String就是它的子类

4、子类方法的权限必须【大于等于】父类方法的权限修饰词

小扩展:修饰词public > protected > (default) > private

备注:(default)不是关键字,而是什么都不写。

注意重写和重载的区别

1、重写是名称和参数列表必须一致。

2、重载是名称一致,参数列表不能一致。

3、对于一个父类方法,如果子类重写了该方法,而又想使用父类该方法的功能,可以通过在子类方法中加入super.父类方法名称。

//父类包含方法
public void showMSG(){
       System.out.println("父类 showMSG");
}

//自乐你包含该方法
@Override
public void showMSG() {
        super.showMSG();
        System.out.println("子类showMSG");
 }

//如果执行子类的showMSG,则会打印如下:
父类 showMSG
子类showMSG

五、父子继承中关于构造方法的相关信息

1、子类构造方法中,有一个默认隐含调用super(),所以一定是先执行父类构造方法,再执行子类构造方法。

2、如果父类构造方法有重载,子类可以通过super(xxx)来选择使用哪个重载构造方法。

3、对父类构造函数的调用,必须放在子类构造函数的第一条执行语句,且只能调用一次

4、子类如果写了对父类构造方法的调用super(xx),则不会赠送默认的,如果没有写则会默认赠送无参构造方法。但是如果父类重载了构造方法,但是没有写无参的构造方法,则子类必须写super(xx)(如果子类有重载构造方法,则每个构造方法都必须写),原因你懂得!

六、super关键字的用法

1、在子类的成员方法中,访问父类的成员变量。

2、在子类的成员方法中,访问父类的成员方法。

3、在子类的构造方法中,访问父类的构造方法。

注意:

如果子类重载了构造方法,如果在某个构造方法中使用了this(...),则在该构造方法中不能再使用super,当然就更会默认赠送。

且this也必须放在第一个执行语句,且也只能是唯一一个。

五、父子继承中关于构造方法的相关信息

//===========================================================
public class Father {
    private  int a;
    private  int b;

    //无参构造方法
    public Father() {
        System.out.println("父类无参构造方法");
    }

    //有参构造方法1
    public Father(int a) {
        this.a = a;
        System.out.println("父类有参构造方法1");
    }

    //有参构造方法2
    public Father(int a, int b) {
        this.a = a;
        this.b = b;
        System.out.println("父类有参构造方法2");
    }
}


//===========================================================
public class Son extends Father{
    private int x;
    private int y;

    public Son() {
        System.out.println("子类无参构造方法");
    }

    public Son(int x) {
        this.x = x;
        System.out.println("子类有参构造方法1");
    }

    public Son(int x, int y) {
        this.x = x;
        this.y = y;
        System.out.println("有参构造方法2");
    }
}

//=================================================================
public class Demo {
    public static void main(String[] args) {
        Son one = new Son();
    }

}

//=======================输出====================
父类无参构造方法
子类无参构造方法
//========================================================
public class Father {
    private  int a;
    private  int b;

    //无参构造方法
    public Father() {
        System.out.println("父类无参构造方法");
    }

    //有参构造方法1
    public Father(int a) {
        this.a = a;
        System.out.println("父类有参构造方法1");
    }

    //有参构造方法2
    public Father(int a, int b) {
        this.a = a;
        this.b = b;
        System.out.println("父类有参构造方法2");
    }
}

//========================================================
public class Son extends Father{
    private int x;
    private int y;

    public Son() {
        //super(10);
        this(10);
        System.out.println("子类无参构造方法");
    }

    public Son(int x) {
        this(10,1);
        this.x = x;
        System.out.println("子类有参构造方法1");
    }

    public Son(int x, int y) {
        super(10,10);
        this.x = x;
        this.y = y;
        System.out.println("有参构造方法2");
    }
}
//==================================================================
public class Demo {
    public static void main(String[] args) {
        Son one = new Son();
    }

}
//============================ 输出结果 ======================
父类有参构造方法2
有参构造方法2
子类有参构造方法1
子类无参构造方法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
辽B代驾管理系统对代驾订单管理、用户咨询管理、代驾订单评价管理、代驾订单投诉管理、字典管理、论坛管理、公告管理、新闻信息管理、司机管理、用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行辽B代驾管理系统程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。辽B代驾管理系统的开发让用户查看代驾订单信息变得容易,让管理员高效管理代驾订单信息。 辽B代驾管理系统具有管理员角色,用户角色,这几个操作权限。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看代驾订单,删除代驾订单操作,新增代驾订单操作,修改代驾订单操作。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。新闻管理页面,此页面提供给管理员的功能有:新增新闻,修改新闻,删除新闻。新闻类型管理页面,此页面提供给管理员的功能有:新增新闻类型,修改新闻类型,删除新闻类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值