博客
关于我
006继承的用法
阅读量:550 次
发布时间:2019-03-09

本文共 3088 字,大约阅读时间需要 10 分钟。

继承中的成员变量使用

在Java中,继承允许一个子类继承父类的成员变量,并可以在此基础上进行修改或扩展。在本次练习中,我们将学习如何在继承关系中使用成员变量。

代码分析

package cn.oop2;public class TestExtends {	public static void main(String[] args) {		final Son son = new Son();		son.eat();	}}class Father {	int count = 0;	int sum = 200;}class Son extends Father {	int sum = 100;	public void eat() {		int sum = 10;		System.out.println(sum); // 输出10,遵循就近原则,打印局部变量		System.out.println(this.sum); // 输出100,使用this调用本类成员变量		System.out.println(super.sum); // 输出200,使用super调用父类成员变量		System.out.println(count); // 输出0,super调用父类成员变量	}}

解释

  • 父类成员变量:在父类Father中定义了两个成员变量countsum,分别初始化为0和200。
  • 子类成员变量:在子类Son中定义了一个名为sum的成员变量,初始化为100。由于sum在子类中被重新定义了,因此需要使用this.sum来访问子类的sum成员变量。
  • 局部变量与成员变量的区分:在方法eat()中定义了一个局部变量sum,其值为10。根据就近原则,局部变量会覆盖本类成员变量sum,因此需要使用this.sum来访问本类的sum成员变量。
  • super关键字的使用:在eat()方法中,使用super.sum可以访问父类的sum成员变量,输出200。super关键字用于调用父类的构造方法或成员变量。
  • 继承中的成员方法使用

    在Java中,继承允许子类继承父类的成员方法,并可以对方法进行重写(override)。成员方法的使用是OOP中非常重要的概念,允许我们在不修改原有代码的情况下对方法的功能进行修改和扩展。

    代码分析

    package cn.oop2;public class Test2Extends2 {	public static void main(String[] args) {		final Son2 son2 = new Son2();		Father2 son3 = new Son2();		son2.play(); // 儿子喜欢打篮球		son2.study(); // 儿子喜欢打篮球		son3.play(); // 父亲喜欢打羽毛球	}}class Father2 {	public void play() {		System.out.println("父亲喜欢打羽毛球");	}}class Son2 extends Father2 {	public void play() {		System.out.println("儿子喜欢打篮球");	}	public void study() {		System.out.println("儿子学习搬砖");	}}

    解释

  • 父类方法:在父类Father2中定义了一个方法play(),输出“父亲喜欢打羽毛球”。
  • 子类方法重写:在子类Son2中对play()方法进行了重写,输出“儿子喜欢打篮球”。子类可以通过调用super.play()来调用父类的play()方法。
  • 成员方法调用:在主类Test2Extends2中创建了两个对象,一个是Son2,另一个是Father2。通过调用play()方法,可以分别输出“儿子喜欢打篮球”和“父亲喜欢打羽毛球”。
  • 构造方法的使用

    构造方法(constructor)是Java中用于创建对象的关键机制。在继承关系中,构造方法的使用允许子类在创建对象时对父类的构造进行扩展。

    代码分析

    package cn.oop2;public class Test3Extends3 {	public static void main(String[] args) {		final Person person = new Person();		final Person person2 = new Person("海绵宝宝");		final Person person3 = new Person("花木兰", 18, "中国古代");		System.out.println(person2.name); // 海绵宝宝		System.out.println(person3.address); // 中国古代		person.eat(); // 干饭时间到!		person2.eat(); // 干饭时间到!		person3.eat(); // 干饭时间到!	}}class Person {	String name;	int age;	String address;	public Person() {		System.out.println("我是Person类的无参数构造");	}	public Person(String s) {		name = s;		System.out.println("我是Person类的1个参数构造");	}	public Person(String name, int age, String address) {		super();		this.name = name;		this.age = age;		this.address = address;		System.out.println("我是Person类的全参构造");	}	public void eat() {		System.out.println("干饭时间到!");	}}

    解释

  • 无参数构造:在Person类中定义了一个无参数构造,执行时会输出“我是Person类的无参数构造”。
  • 单参数构造:定义了一个接受一个String参数的构造,执行时会输出“我是Person类的1个参数构造”,并将参数赋值给name成员变量。
  • 全参数构造:定义了一个接受三个参数的构造(String name, int age, String address),执行时会输出“我是Person类的全参构造”,并将参数赋值给相应的成员变量。此外,通过调用super()可以调用父类的无参数构造。
  • 成员方法调用:在eat()方法中,输出了“干饭时间到!”,这是一个简单的成员方法调用。
  • 关键点回顾

  • 成员变量的继承与使用:子类可以直接使用父类的成员变量,并可以通过thissuper关键字进行区分和调用。
  • 成员方法的重写:子类可以对父类的方法进行重写,通过super关键字调用父类的方法。
  • 构造方法的使用:子类可以通过调用父类的构造方法(super())来创建父类对象,并进行必要的初始化。
  • thissuper的区别this表示当前对象,用于访问本类成员变量和方法;super表示父类对象,用于调用父类构造方法或访问父类成员变量。
  • 通过以上内容的学习和实践,您可以更好地理解Java中继承关系中的成员变量、方法和构造方法的使用,从而在实际开发中灵活运用这些概念。

    转载地址:http://swksz.baihongyu.com/

    你可能感兴趣的文章
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
    查看>>
    NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>
    Nim教程【十二】
    查看>>
    Nim游戏
    查看>>
    NIO ByteBuffer实现原理
    查看>>
    Nio ByteBuffer组件读写指针切换原理与常用方法
    查看>>
    NIO Selector实现原理
    查看>>
    nio 中channel和buffer的基本使用
    查看>>
    NIO基于UDP协议的网络编程
    查看>>
    NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
    查看>>
    Nitrux 3.8 发布!性能全面提升,带来非凡体验
    查看>>