java——继承(一)

一:匿名对象

        只能使用一次,每一次使用都会创建一个新的对象,默认值和数组的默认值的规则相同。所以适用于调用一次对象的情况:

public class ClassAnonymous {String name;public void show(){System.out.println(name+"真厉害");}
}
public class AnonymousDemo {public static void main(String[] args) {new ClassAnonymous().name="刘备";new ClassAnonymous().show();}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=5773:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo AnonymousDemo
null真厉害进程已结束,退出代码0

        我明明输入了姓名,可是在我调用的时候输出的确是 null, 这是因为每一次 new 都相当于创建了一次对象;

二:继承

继承是多态的前提:

继承所要解决的就是:共性问题;

被继承的称为 父类(基类/超类);需要继承的是 子类(派生类)

(1)特点

子类可以拥有父类的内容;

子类也可以拥有自己特殊的内容:

(2)关键字:extends 

        我们使用关键字 extends 使子类“继承父类”,在使用时,就将子类当作父类使用;

        我们可以看到,子类 Mangay 里面什么都没有,但是创建它的对象时,却可以调用 父类的 earn方法。因此我们说,子类在使用时,就将当作父类使用;

public class Manpeople {private String name;private int age;public void earn(){System.out.println("好好挣钱!");}
}
public class Mangay extends Manpeople{}
public class Mandemo {public static void main(String[] args) {Mangay m=new Mangay();m.earn();}
}

三:成员变量调用特点

1.一般的继承

父类也是一般类,也可以拥有自己的对象,来调用自己的方法;

子类的对象可以调用自己的方法,也可以调用父类的方法;

public class Fu {String name;int age;public void life(){System.out.println("生活" + "很美好");}
}
public class Zi extends Fu{String sex;public void eat(){System.out.println("活得好就行!");}
}
public class FuZiDemo {public static void main(String[] args) {Fu fu=new Fu();fu.life();  //父类自己的方法System.out.println("===========");Zi z=new Zi();z.eat();    //子类自己的方法z.life();   //子类继承父类的方法}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=11226:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo FuZiDemo
生活很美好
===========
活得好就行!
生活很美好进程已结束,退出代码0

 2.父类子类的成员变量重名

2.1使用对象直接调用重名的成员变量

子类有该成员变量,优先调用子类的成员变量,没有再从父类中找;

public class Fu {String name;int age=100;public void life(){System.out.println("生活" + "很美好");}
}
public class Zi extends Fu{String sex;int age=10;public void eat(){System.out.println("活得好就行!");}
}
public class FuZiDemo {public static void main(String[] args) {Fu fu=new Fu();System.out.println(fu.age);Zi z=new Zi();System.out.println(z.age);//子类有,优先调用子类的变量,没有往上找}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=11822:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo FuZiDemo
100
10

2.2使用成员方法间接调用重名的成员变量:

毫无疑问,父类的对象调用自己的成员方法时使用的是自己的成员变量;子类的对象调用自己的成员方法时使用的是自己的成员变量;

但是,子类的对象调用父类的方法时,使用的是父类的成员变量,即方法属于谁,就使用谁的成员变量;

public class Fu {String name;int age=100;public void life(){System.out.println("生活" + age+"很美好");}
}
public class Zi extends Fu{String sex;int age=10;public void eat(){System.out.println(age+"活得好就行!");}
}
public class FuZiDemo {public static void main(String[] args) {Fu fu=new Fu();System.out.println(fu.age);Zi z=new Zi();System.out.println(z.age);//子类有,优先调用子类的变量,没有往上找fu.life();//父类自己的方法z.eat();//子类自己的方法z.life();//子类父亲中的方法}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=11916:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo FuZiDemo
100
10
生活100很美好
10活得好就行!
生活100很美好进程已结束,退出代码0

(3)总结 

我们来总结一下:

对于使用对象直接调用重名的成员变量时,关键看谁有,即子类有就调用子类的,没有就往父类中找;

对于使用方法间接调用重名的成员变量时,成员变量属于谁,就调用谁中的成员变量;

四:子类、父类和子类局部变量重名

局部变量的调用:直接输出 ;

本类成员变量的输出:this.成员变量 ;

父类成员变量的输出:super. 成员变量;

public class Fu01 {String name="刘备备";
}
public class Zi01 extends Fu01 {String name="曹操操";public void life(){String name="吕小布";System.out.println(name);System.out.println(this.name);System.out.println(super.name);}
}
public class Demo01 {public static void main(String[] args) {Zi01 z=new Zi01();z.life();}
}

 五:成员方法的调用

成员方法重名时,子类有,调用子类的成员方法;子类没有,再往上找;

public class Fu01 {String name="刘备备";public void life(){System.out.println("这是父类的成员方法");}
}
public class Zi01 extends Fu01 {String name="曹操操";public void life(){System.out.println("这是子类的成员方法");}
}
public class Demo01 {public static void main(String[] args) {Zi01 z=new Zi01();z.life();//子类有,优先调用子类的成员方法}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=12667:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo Demo01
这是子类的成员方法进程已结束,退出代码0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/8081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python入门demo实例-个人信息收集页面

dd 今天是python入门day2,先看一下本案例demo的样子吧~ 资源下载: python案例demo个人信息收集页面实现资源-CSDN文库 实现上述界面需要pythonhtml实现,需通过在Web浏览器的地址栏中输入 http://127.0.0.1:5000/打开界面,127.0.…

云密码机的定义与特点

云密码机,作为云计算环境中保障数据安全的关键设备,其重要性不言而喻。它基于虚拟化技术,通过提供高性能的数据加解密、密钥管理等服务,确保云上数据的安全与隐私。下面,安策科技将从云密码机的定义、特点、应用场景以…

DDD领域驱动架构有哪些

领域驱动设计并没有一种固定的架构模式,因为它是一种设计方法论,更侧重于解决问题域的建模和分析。但是在实践中,可以根据具体的业务场景和需求进行架构设计,常见的领域驱动架构如下: 六边形架构(Hexagonal Architecture) 又称为端口与适配器模式,其核心思想是将系统…

工业大模型赋能新型工业化的路径探索

人工智能是引领新一轮科技革命和产业变革的战略性技术,具有溢出带动效应很强的“头雁”作用。在十四届全国人大二次会议上,开展“人工智能”专项行动被首次写入《政府工作报告》,这为人工智能赋能新型工业化提供了深刻的理论支撑。当前&#…

精益生产咨询公司在企业转型中发挥的作用有哪些?

在全球化竞争日益激烈的今天,企业转型已成为许多组织求生存、谋发展的必经之路。而在这条道路上,精益生产咨询公司的作用愈发凸显,它们如同企业转型的得力助手,帮助企业在复杂的商业环境中找到新的增长点,实现更高效、…

CRMEB 多商户 Java版 v1.5正式发布,v1.6更新预告新鲜出炉

CRMEB 多商户 Java版 v1.5正式发布啦! 新增卡密商品、云盘商品、小程序外链生成器工具、新增商家主动退款、商品列表批量操作,以及后台UI的全面优化升级等。多商户Java版的用户朋友们,新版本可以安排起来啦! 同时,多商…

VBA助力Excel工作薄另存备份和自我销毁,确保工作薄名称自始至终不被修改

VBA助力Excel工作薄另存备份和自我销毁,确保工作薄名称自始至终不被修改 工作中,你是否遇到过这样的情况,工作表改来改去,工作薄名称也从“初稿”、“终稿”、“最终版”、“上交版”等逐步变化,最后也不知道哪版是最后一版,想从修改日期查看哪个是最后一版,可逐个打开关…

WingPro for Mac注册激活版:Python开发的强大引擎

对于Python开发者来说,一款好的开发工具能够极大地提高开发效率。而WingPro for Mac正是这样一款强大的引擎,让Python开发变得更加高效和便捷。 WingPro for Mac拥有直观的用户界面和强大的调试器,能够快速定位问题并修复错误。它支持PEP8风格…

面试被问“薪资预期”,高情商如何巧妙回应而非直接报数?

在每一次求职的旅途中,我们都会面临一个似乎不可避免的问题——“你对薪资有何期待?”这个问题如同一个试金石,既能检验求职者的专业能力,又能窥见求职者的情商高低。在我看来,如何巧妙地回答这个问题,不仅…

Python 多进程和多线程在加速程序运行上的差别

起因是在处理一个需要大量计算且批量生成文件的程序时,使用多线程的方法处理计算任务加速效果不理想,后来采用了多进程的方式加速效果很好,所以花点时间探究一下两者之间的区别。 目录 1. 多线程(multi-thread) 2. …

mongodb-批量刷新数据

1、第一种联合删除 db.collection.aggregate([{$lookup: {from: "带刷新数据源表-test1",localField: "devCode",foreignField: "oldDevCode",as: "matching_docs"}},{$unwind: "$matching_docs"},{$set: {"devCode&q…

N7552A是德科技N7552A电子校准件

181/2461/8938产品概述: 更小巧轻便的 2 端口模块,支持 3.5 mm 或 N 型 50 Ω 连接器,能够将校准时间缩短一半 特点 频率范围:直流至 9 GHz 使用 N 型或 3.5 mm 连接器 更小巧轻便的 2 端口电子校准件(ECal&#xff…

leetcode 2466.统计构造好字符串的方案数

思路:dp 其实这道题总的来说,就是爬楼梯问题,大家可以转化一下,并且发现一下爬楼梯问题的规律。 爬楼梯问题,基本上题目的状态只有两个,并且是固定的(不排除有变形的爬楼梯题目)&a…

【JVM】类加载机制

类加载的生命周期 类加载过程:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。 总结: 五个阶段:加载、验证、准备、解析、初始化 PS:其中解析阶段在某些情况下可以在初始化阶段之后开始。…

Nacos扩展:使用nacos实现自定义文本配置的实时刷新

文章目录 一、背景二、编码1、spring.factories2、NacosPropertiesLoader3、NacosConfigHandler4、NacosLoaderConfiguration5、测试类6、扩展 一、背景 我们都知道,使用Nacos时,如果将Bean使用RefreshScope标注之后,这个Bean中的配置就会做…

数仓分层——ODS、DW、ADS

一、什么是数仓分层 数据仓库分层是一种组织和管理数据仓库的结构化方法,它将数据仓库划分为不同的层次或级别,每个层次具有特定的功能和目的。这种分层方法有助于管理数据仓库中的数据流程、数据处理和数据访问,并提供一种清晰的结构来支持…

java接受入参是xml格式参数demo

java接受入参是xml格式参数demo 依赖demo1. xml入参定义2.接口定义3. postman请求4. 结果 注解说明 依赖 pom依赖 jackson-dataformat-xml <dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</…

Python实现txt转Excel(坐标)

import pandas as pddef txt_to_excel(txt_file, excel_file):# 读取 txt 文件with open(txt_file, r) as f:lines f.readlines()# 将每行数据分割成多个单元格data []for line in lines:row line.strip().split( )data.append(row)# 将数据保存到 Excel 文件df pd.DataFra…

EPAI手绘建模APP数值几何变换

(10) 数值几何变换 图 257 数值几何变换工具栏 ① 数值几何变换和交互式几何变换都包括移动、旋转、缩放模型。但是交互式几何变换变换时的变换轴是模型自身中心为变换中心&#xff0c;以X、Y、Z方向的为变换方向&#xff0c;而数值几何变换可以指定变换中心和变换方向。另外&a…

HashSet和TreeSet的区别是什么?

HashSet和TreeSet的区别是什么&#xff1f; HashSet和TreeSet是Java集合框架中两种常用的Set实现&#xff0c;它们各自有独特的特点和用途。以下是它们之间的主要区别&#xff1a; 存储顺序&#xff1a; HashSet&#xff1a;不保证元素的存储顺序&#xff0c;也不保证元素的…