Java_Day04学习

news2024/12/27 12:20:06

类继承实例

package com.dx.test03;
public class extendsTest {
    public static void main(String args[]) {
        // 实例化一个Cat对象,设置属性name和age,调用voice()和eat()方法,再打印出名字和年龄信息
        /********* begin *********/
        Cat cat = new Cat();
        cat.setName("大花猫");
        cat.setAge(6);

        cat.voice(cat.getName());
        cat.eat(cat.getName());

        System.out.println(cat.getName()+cat.getAge()+"岁");
        /********* end *********/

        // 实例化一个Dog对象,设置属性name和age,调用voice()和eat()方法,再打印出名字和年龄信息
        /********* begin *********/
        Dog dog =new Dog();
        dog.setName("大黑狗");
        dog.setAge(8);

        dog.voice(dog.getName());
        dog.eat(dog.getName());

        System.out.println(dog.getName()+dog.getAge()+"岁");
        /********* end *********/

    }
}

class Animal {
    /********* begin *********/
    //将属性name和age封装起来
    private String name;
    private int age;
    //外部调用实例化属性
    public void setName(String name){
        this.name = name;
    }
    public void setAge(int age){
        this.age = age;
    }
    //提供对外访问方法
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }

    /********* end *********/

}

class Cat extends Animal {
    // 定义Cat类的voice()和eat()方法
    /********* begin *********/
    public void voice(String name){
        System.out.println(name+"喵喵叫");
    }
    public void eat(String name){
        System.out.println(name+"吃鱼");
    }
    /********* end *********/
}

class Dog extends Animal {
    // 定义Dog类的voice()和eat()方法
    /********* begin *********/
    public void voice(String name){
        System.out.println(name + "汪汪叫");
    }
    public void eat(String name){
        System.out.println(name + "吃骨头");
    }
    /********* end *********/
}

super关键字

super主要的功能是完成子类调用父类中的内容,也就是调用父类中的属性或方法。
    
super关键字的使用:
1.super()可以用来引用直接父类的实例变量。//super.color
		eg:
			public class TestSuper1 {
                public static void main(String args[]) {
                    Dog d = new Dog();
                    d.printColor();
                }
            }
			//父类 color = "white"
            class Animal {
                String color = "white";
            }
			//子类 color = "black";
            class Dog extends Animal {
                String color = "black";
                void printColor() {
                    //打印Dog类的color
                    System.out.println(color);
                    //打印Animal类的color,Animal是父类,直接super.color调用
                    System.out.println(super.color);
                }
            }
                    输出结果:
                    black
                    white
		//Animal和Dog都有一个共同的属性:color。 如果我们打印color属性,它将默认打印当前类的颜色。要访			问父属性,需要使用super关键字指定。
                        
                        
2.super()可以用来调用直接父类方法。
             public class TestSuper2 {
                public static void main(String args[]) {
                    Dog d = new Dog();
                    d.work();
                }
            }
			//父类 eat方法
            class Animal {
                void eat() {
                    System.out.println("eating...");
                }
            }
			//子类 super.eat();
            class Dog extends Animal {
                void eat() {
                    System.out.println("eating bread...");
                }
                void bark() {
                    System.out.println("barking...");
                }
                void work() {
                    super.eat();			//在子类的方法中,使用super.eat()直接调用父类方法
                    bark();
                }
            }
			输出结果:
                eating...
                barking...
			//Animal和Dog两个类都有eat()方法,如果要调用Dog类中的eat()方法,它将默认调用Dog类的eat()方			法,因为当前类的优先级比父类的高。所以要调用父类方法,需要使用super关键字指定。



3.super()可以用于调用直接父类构造函数。
                public class TestSuper3 {
                    public static void main(String args[]) {
                        Dog d = new Dog();
                    }
                }
                class Animal {
                    Animal() {
                        System.out.println("animal is created");
                    }
                }
                class Dog extends Animal {
                    Dog() {
                        super();
                        System.out.println("dog is created");
                    }
                }
                输出结果:
                animal is created
                dog is created
			//如果没有使用super()或this(),则super()在每个类构造函数中由编译器自动添加。

super与this关键字的比较

super关键字(父类):我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字(自己):指向自己的引用。
    superthis 调用构造方法时都需要放在首行,所以superthis 调用构造方法的操作是不能同时出现的。

e5c6b6414af57dbc4613a89343b06ab

方法重写和重载

1.方法的重写(override);
定义:	 //子类从父类中继承方法,有时,子类需要修改父类中定义的方法的实现,这称做方法的重写;  
    	//当一个子类继承一父类,而子类中的方法与父类中的方法的名称、参数个数和类型都完全一致时,就称子类中的这个方法重写了父类中的方法。
规则:
    	//重写的方法不能比被重写的方法有更严格的访问权限;
		//重写的方法不能比被重写的方法产生更多的异常(关于异常,在后面会介绍)。

    eg:
	class Super {public String test01(String xxx,int sum){}}//访问权限 方法返回值类型 方法1(参数1)
    
	//访问权限 方法返回值类型 方法1(参数1) —————>复写父类中的方法
    class Sub extends Super{public String test01(String xxx,int sum){}}
         
         
    
2.方法的重载(overload);
    被重载的方法必须改变参数列表(参数个数或类型不一样);
    被重载的方法可以改变返回类型;
    被重载的方法可以改变访问修饰符;
    被重载的方法可以声明新的或更广的检查异常;
    方法能够在同一个类中或者在一个子类中被重载。
    无法以返回值类型作为重载函数的区分标准。
    
    

3.重写与重载之间的区别。

重写和重载区别

代码块

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

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

相关文章

李飞飞创业公司World Labs:引领AI新方向的“大世界模型”

引言 随着人工智能的不断进步,AI领域涌现了许多新兴技术和研究方向。在这其中,李飞飞创办的World Labs凭借其独特的“空间智能”和“大世界模型”(Large World Model, LWM)理念,迅速成为焦点。尤其是在获得了2.3亿美元…

python 斑马打印模板

打印代码逻辑如下; 包括样式、表格 import win32printdef print_zpl_from_usb_printer(printer_name, zpl_content):# 打开打印机hPrinter win32print.OpenPrinter(printer_name)if hPrinter is None:print(f"Failed to open printer: {printer_name}")…

淘宝商品评论数据获取API接口响应参数列表展示(可测key)

item_review-获得淘宝商品评论 在电商领域,商品评论数据是商家和消费者都极为关注的重要信息。通过这些数据,商家可以了解产品的市场反馈,优化产品和服务;而消费者则可以参考其他用户的评价,做出更明智的购买决策。然…

Vulkan 学习(9)---- vkSuraceKHR 创建

目录 OverView创建窗口表面参考代码 OverView Vulkan 是一个平台无关的图形API,这意味着它不能直接与特定的窗口系统(Windows,linux 和 macOS 的窗口系统)进行交互 为了解决这个问题,Vulkan 引入了窗口系统集成(Window System Intergration …

Flutter为Android添加签名并打包

前言 我们需要将App进行数字签名才能发布到商店里。在这里就具体描述一下如果给App添加签名 为App签名 创建一个用户上传的秘钥库 如果你已经有一个秘钥库了,可以直接跳到下一步,如果没有则按照下面的指令创建一个 keytool 可能不在我们的系统路径中…

Vxe UI vue vxe-table 实现自适应列宽,根据内容自适应列的宽度

Vxe UI vue vxe-table 实现自适应列宽,根据内容自适应列的宽度 之前老版本是通过计算字符数量,然后给动态给每一列设置宽度,不仅麻烦,还不好复用。 看了 API 发现 v4.7 和 v3.9 版本已经直接就能支持了,只需加上 widt…

英飞凌TC3xx -- Bootstrap Loader分析

目录 1.Bootstrap Loaders作用 2.CAN BSL详解 2.1 CAN BSL的时钟系统 2.2 CAN BSL流程 3.小结 英飞凌TC3xx的Platform Firmware章节里,提供了多种启动模式: Internal start from Flash:b111Alternate Boot Mode:b110Generic …

宠物鱼油补充剂行业调研:未来几年年复合增长率CAGR为7.8%

宠物鱼油补充剂是一种营养补充剂,富含从鱼类中提取的欧米伽-3 脂肪酸(主要是 EPA 和 DHA),专为宠物设计,以改善其健康状况。鱼油补充剂富含奥米加-3 脂肪酸,已被证明对宠物健康有诸多益处,包括改…

ER论文阅读-Incomplete Multimodality-Diffused Emotion Recognition

基本介绍:NeurIPS, 2024, CCF-A 原文链接:https://proceedings.neurips.cc/paper_files/paper/2023/file/372cb7805eaccb2b7eed641271a30eec-Paper-Conference.pdf Abstract 人类多模态情感识别(MER)旨在通过多种异质模态&#x…

开源模型应用落地-Qwen2.5-Coder模型小试-码无止境(一)

一、前言 代码专家模型是一种基于人工智能的先进技术,旨在自动分析和理解大量代码库,并从中学习常见的编码模式和最佳实践。这种模型通过深度学习和自然语言处理,能够提供准确而高效的代码建议,帮助开发人员在编写代码时有效地避免…

freemobus阅读笔记

以下,仅仅在freemodbus中有效 pvMBFrameStart中的pv是什么的缩写 p代表指针,V母鸡,MBFrameStart指的是modbus系统的开始 pusLength 中的pus p代表指针,u代表无符号 s代表short短整型 pucFrame 中的puc p代表指针&#xff0c…

Linux学习笔记13---GPIO 中断实验

中断系统是一个处理器重要的组成部分,中断系统极大的提高了 CPU 的执行效率,本章会将 I.MX6U 的一个 IO 作为输入中断,借此来讲解如何对 I.MX6U 的中断系统进行编程。 GIC 控制器简介 1、GIC 控制器总览 I.MX6U(Cortex-A)的中断控制器…

测试文件和数据库文件

接口测试 flaks项目入口文件manage.py路由配置 import requests#首先面向对象作封装,避免相同代码反复编写 class HttpApiTest:def test_get(self,url,data{}): #用来测试get方法的接口 #self通过共享self类中间的变量 #url用来请求接口 #data可传可不传res reques…

明日周刊-第21期

断更了一段时间,现在开始续上。本周的最大的杭州科技活动应该就是云栖大会了,一年一度的云栖大会也不知不觉经过了十年,趁着周六我也去好好体验了一番。(ps:下周炉石传说重回国服了,各位都准备好了吗&#…

多个异构系统用户权限如何统一管理?

企业内部往往部署了多个业务系统来支撑不同的业务流程,然而,这些系统之间的标准不一,导致跨系统操作时权限不透明,难以确保数据安全与合规操作。同时,频繁的权限变更与维护工作量大且效率低,给企业带来了诸…

干货:企业微信批量删除客户指南!

随着客户量的增加,管理员常常面临一个问题——如何批量删除客户。其实新版本的应用支持批量删除一些单向客户,可以一次性把外部联系人名额空出很多来了。 具体的操作步骤是: 手机端软件-通讯录-我的客户-微信客户-全部微信客户-单向微信客户…

2024已然过半,AI技术卷到哪儿了?

可以说,科技的发展真的是日新月异,2024年年初,大模型Sora的出现,改变了短视频行业的演变方向,使得AI技术不再只是停留在文生文,文生图阶段,而是发展到了文生视频领域。2024年5月,回忆…

短剧APP开发功能特点,短剧爆火下的市场发展

今年以来,短剧迅速爆发,为市场带来了不菲的成绩!短剧的火爆,直接推动了短剧的创作,更是激发了短剧制作商的创作热情,各种类型的短剧层出不穷,为观众带来了多种多样的短剧选择。 近年来&#xf…

区块链中的去中心化,点对点网络系统,所有权本质,,双花问题的详解

去中心化的概念 区块链去中心化是指一种分布式数据库技术,它通过加密算法和共识机制在网络中的多个节点上存储数据,从而实现数据的去中心化管理。在区块链去中心化中,没有中心化的权威机构或服务器来控制或验证数据,而是依赖于网络…

又到了金九银十,你的简历写好了吗?

又到了金九银十的招聘季,不过这几年求职环境越来越差,相比于跳槽找新机会,大家可能更倾向于守住自己手头的工作,稳字当头。当然,也有很多工作实在干烦了的朋友,想要换个新赛道试试。今天就给大家带来一个新…