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.mfbz.cn/a/608632.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分享四种免费获取SSL的方式

SSL证书目前需要部署安装的网站很多,主要还是基于国内目前对证书的需求度在不断的升高,网站多了、服务器多了之后。网络安全问题就成为了大家不得不面对的一个重要的问题了。SSL证书的作用有很多,这里就不一一详述了,本期作品主要…

如何在线阅读Linux内核源码?

开源社区有一句名言:Talk is cheap, show me your code。阅读源代码是学习Linux操作系统的必经之路。但是,Linux内核的代码量超过3000万行,工程包非常大,直接下载耗时较长,这就需要使用一些在线阅读的技巧。 方式1&am…

【深度学习】【Lora训练0】StabelDiffusion,Lora训练,kohya_ss训练

文章目录 环境数据自动标注kohya_ss BLIP2kohya_ss WD14 后续 资源: (1)训练ui kohya_ss: https://github.com/bmaltais/kohya_ss (2)kohya_ss 的docker 其他docker https://github.com/ashleykleynhans…

韩顺平0基础学Java——第7天

p110-p154 控制结构(第四章) 多分支 if-elseif-else import java.util.Scanner; public class day7{public static void main(String[] args) {Scanner myscanner new Scanner(System.in);System.out.println("input your score?");int s…

Word表格标题间距大修改环绕为无仍无法解决

1.选中表格,右键选择【表格属性】 2.选择【环绕】,此时【定位】可以被启用(如下),点击进入窗口 3.修改参数和下面一模一样 注意:【垂直】那里的修改方式是先选段落,后在位置输入0

【linux】主分区,扩展分区,逻辑分区,动态分区,引导分区,标准分区

目录 主分区,扩展分区,逻辑分区 主分区和引导分区 主分区,扩展分区,逻辑分区(标准分区) 硬盘一般划分为一个“主分区”和“扩展分区”,然后在扩展分区上再分成数个逻辑分区。 磁盘主分区扩展…

html+css-Day1(盒子模型)

一、常用属性 1、字体设置font "line-height" 是 CSS 中的一个属性,用于设置文本行之间的距离,也就是行间距。它影响着段落、行内元素或者任何包含文本的元素的可读性。"line-height" 可以设置为数字、长度单位(如 px、e…

现货黄金流程到何种程度?现货黄金在金融产品中的占比是多少?

踏入2024年以来,受美联储降息以及地缘局势紧张的影响,美元受压,避险情绪高涨,众多因素影响下黄金价格出现了强势的上涨,屡创历史新高。在上涨如此强劲的背景下,投资者希望通过黄金投资来实现资产增值。市场…

力扣爆刷第135天之数组五连刷(双指针快慢指针滑动窗口)

力扣爆刷第135天之数组五连刷(双指针快慢指针滑动窗口) 文章目录 力扣爆刷第135天之数组五连刷(双指针快慢指针滑动窗口)一、704. 二分查找二、27. 移除元素三、977. 有序数组的平方四、209. 长度最小的子数组五、59. 螺旋矩阵 II…

Adversarial Synthesis of Human Pose From Text # 论文阅读

URL https://arxiv.org/pdf/2005.00340 TD;DR 20 年 5 月来自高校的一篇论文,任务是用 GAN 生成 pose,目前 7 引用。 Model & Method 输入的是描述动作的 text,通过 text encoder(本文用的是叫做 fastText 的方法&#…

Kafka应用Demo:指派分区订阅消息消费

环境准备 Kafka环境搭建和生产者样例代码与《Kafka应用Demo:按主题订阅消费消息》相同。 消费者代码样例 public class KafkaConsumerService {private static final Logger LOGGER LoggerFactory.getLogger(KafkaConsumerService.class);private static final S…

word图片水印

一、word中旧水印如何删除 打开word模板,想要删除旧水印,如下图所示操作,但是旧水印删除不掉。 以为上传新水印图片会替换掉旧水印,结果显示了2个水印,要怎么删除呢? 如下截图所示,双击打开页…

vue+element的表格(el-table)排班情况表(2024-05-09)

vueelement的表格&#xff08;el-table&#xff09;排班情况&#xff0c;增删查改等简单功能 代码&#xff1a; <template><!-- 表格 --><div class"sedules"><el-header><el-date-pickerv-model"monthValue2"type"month…

YOLOv8网络结构介绍

将按照YOLOv8目标检测任务、实例分割任务、关键点检测任务以及旋转目标检测任务的顺序来介绍&#xff0c;主要内容也是在目标检测任务中介绍&#xff0c;其他任务也只是Head层不相同。 1.YOLOv8_det网络结构 首先&#xff0c;YOLOv8网络分成了三部分&#xff0c;分别是主干网络…

制鞋5G智能工厂数字孪生可视化平台,推进行业数字化转型

制鞋5G智能工厂数字孪生可视化平台&#xff0c;推进行业数字化转型。随着科技的飞速发展&#xff0c;5G技术与智能制造的结合正成为推动制鞋行业数字化转型的重要力量。制鞋5G智能工厂数字孪生可视化平台&#xff0c;不仅提高了生产效率&#xff0c;还优化了资源配置&#xff0…

【Linux系统编程】31.pthread_detach、线程属性

目录 pthread_detach 参数pthread 返回值 测试代码1 测试结果 pthread_attr_init 参数attr 返回值 pthread_attr_destroy 参数attr 返回值 pthread_attr_setdetachstate 参数attr 参数detachstate 返回值 测试代码2 测试结果 线程使用注意事项 pthread_deta…

SpringCloud:认识微服务

程序员老茶 &#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; P   S : 点赞是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#…

NSSCTF | [SWPUCTF 2021 新生赛]easy_sql

打开题目&#xff0c;提示输入一些东西&#xff0c;很显眼的可以看到网站标题为“参数是wllm” 首先单引号判断闭合方式 ?wllm1 报错了&#xff0c;可以判断为单引号闭合。 然后判断字节数&#xff08;注意‘--’后面的空格&#xff09; ?wllm1 order by 3-- 接着输入4就…

[Linux][网络][网络层][IP协议]详细讲解

目录 0.基本概念1.IP协议头格式2.IP分片与组装1.为什么要分片&#xff1f;2.分片后谁来组装&#xff1f;3.这个分片操作传输层知道吗&#xff1f;4.如何识别报文和报文的不同&#xff1f;5.接收端&#xff0c;如何得知报文是独立的还是一个分片&#xff1f;6.如何区别哪些分片是…

UDP和TCP协议比较,TOE技术

如今在某些方面TCP超越UDP的主要原因如下 在硬件层面的TOE(TCP Offload Engine)功能&#xff0c;将越来越多的TCP功能卸载到网卡上。它极大地提升了TCP的性能&#xff0c;使其在高吞吐量场景下的表现更为出色。近年TCP的拥塞控制算法实现了显著进步。这些新算法显著提高了TCP在…
最新文章