Java_Day04学习

类继承实例

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

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

相关文章

Pandas -----------------------基础知识(一)

目录 Series对象 属性和方法 布尔值列表获取Series对象中部分数据 运算 DateFrame对象 常用属性 常见方法 运算 总结 Series对象 是DataFrame的列对象或者行对象 生成Series对象生成索引使用元组创建Series对象使用字典创建Series对象 通过Pandas创建对象 自定义索引 …

面试官问:你最自豪的成就是什么?

当面试官问你最自豪的成就是什么,我们首先分析面试官为什么这么问,他想通过这问题得到什么信息? 你最自豪的成就是什么? 其实反应了一个人的职业驱动力,比如我们常说的:上进心,主动积极性&…

【机器学习-监督学习】朴素贝叶斯

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…

【小沐学GIS】基于Openstreetmap创建Sionna RT场景(Python)

文章目录 1、简介1.1 blender 2、下载和安装2.1 Python2.2 jupyter 3、运行结语 1、简介 1.1 blender https://www.blender.org/ Blender 是一款免费开源的3D创作套件。 使用 Blender,您可以创建3D可视化效果,例如静态图像、3D动画、VFX(…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第一篇-原理】

如果想直接制作,请看【第二篇】内容 这次做一个这样的东西,通过在2DRT上实时绘制,生成动态的体积纹理,也就是可以runtime的VDB 设想的文章流程: 对原理进行学习制作体积渲染制作实时绘制 第一篇(本篇)是对“…

【Rust练习】16.模式

文章题目来自:https://practice-zh.course.rs/pattern-match/patterns.html 1 🌟🌟 使用 | 可以匹配多个值, 而使用 … 可以匹配一个闭区间的数值序列 fn main() {} fn match_number(n: i32) {match n {// 匹配一个单独的值1 > println!(…

【赵渝强老师】K8s中的Deployment控制器

K8s的Deployment将Pod部署成无状态的应用程序,它只关心Pod的数量、Pod更新方式、使用的镜像和资源限制等。由于是无状态的管理方式,因此Deployment中没有角色和顺序的概念,换句话说:Deployment中没有状态。   通过使用Deploymen…

【远程调用PythonAPI-flask】

文章目录 前言一、Pycharm创建flask项目1.创建虚拟环境2.创建flask项目 二、远程调用PythonAPI——SpringBoot项目集成1.修改PyCharm的host配置2.防火墙设置3.SpringBoot远程调用PythonAPI 前言 解决Pycharm运行Flask指定ip、端口更改无效的问题 首先先创建一个新的flask项目&…

C语言 | Leetcode C语言题解之第415题字符串相加

题目: 题解: char* addStrings(char* num1, char* num2) {int i strlen(num1) - 1, j strlen(num2) - 1, add 0;char* ans (char*)malloc(sizeof(char) * (fmax(i, j) 3));int len 0;while (i > 0 || j > 0 || add ! 0) {int x i > 0 ?…

Games101学习 - 着色

本文主要讲述Games101中的着色部分。 文中将使用UE的UTexture2D接口,若不了解可以看这篇: https://blog.csdn.net/grayrail/article/details/142165442 1.面积比计算三角形坐标 通过三角形面积比可以得到三角形的坐标alpha、beta、gamma从而进行插值&a…

ChatGPT 4o 使用指南 (9月更新)

首先基础知识还是要介绍得~ 一、模型知识: GPT-4o:最新的版本模型,支持视觉等多模态,OpenAI 文档中已经更新了 GPT-4o 的介绍:128k 上下文,训练截止 2023 年 10 月(作为对比,GPT-4…

【Linux笔记】虚拟机内Linux内容复制到宿主机的Window文件夹(文件)中

一、共享文件夹 I、Windows宿主机上创建一个文件夹 目录:D:\Centos_iso\shared_files II、在VMware中设置共享文件夹 1、打开VMware Workstation 2、选择需要设置的Linux虚拟机,点击“编辑虚拟机设置”。 3、在“选项”标签页中,选择“共…

Vue学习记录之三(ref全家桶)

ref、reactive是在 setup() 声明组件内部状态用的&#xff0c; 这些变量通常都要 return 出去&#xff0c;除了供 < template > 或渲染函数渲染视图&#xff0c;也可以作为 props 或 emit 参数 在组件间传递。它们的值变更可触发页面渲染。 ref &#xff1a;是一个函数&…

前端组件库

vant2现在的地址 Vant 2 - Mobile UI Components built on Vue

【学习笔记】手写Tomcat 四

目录 一、Read 方法返回 -1 的问题 二、JDBC 优化 1. 创建配置文件 2. 创建工具类 3. 简化 JDBC 的步骤 三、修改密码 优化返回数据 创建修改密码的页面 注意 测试 四、优化响应动态资源 1. 创建 LoginServlet 类 2. 把登录功能的代码放到 LoginServlet 类 3. 创…

【工具变量】科技金融试点城市DID数据集(2000-2023年)

时间跨度&#xff1a;2000-2023年数据范围&#xff1a;286个地级市包含指标&#xff1a; year city treat post DID&#xff08;treat*post&#xff09; 样例数据&#xff1a; 包含内容&#xff1a; 全部内容下载链接&#xff1a; 参考文献-pdf格式&#xff1a;https://…

Rust GUI框架 tauri V2 项目创建

文章目录 Tauri 2.0创建应用文档移动应用开发 Android 前置要求移动应用开发 iOS 前置要求参考资料 Tauri 2.0 Tauri 是一个构建适用于所有主流桌面和移动平台的轻快二进制文件的框架。开发者们可以集成任何用于创建用户界面的可以被编译成 HTML、JavaScript 和 CSS 的前端框架…

使用madExcept检测内存泄漏

代码异常堆栈跟踪&#xff1a;Mad Except 一、安装 官网 运行&#xff0c;选择madExcept5然后安装。 输入yes继续 二、使用 新建一个VCL项目 在project中多了一项设置 选择OK后会发现项目多了几个引用单元。 此时运行程序&#xff0c;再退出&#xff0c;会显示没有任何内存…

嵌入式入门小工程

此代码基于s3c2440 1.点灯 //led.c void init_led(void) {unsigned int t;t GPBCON;t & ~((3 << 10) | (3 << 12) | (3 << 14) | (3 << 16));t | (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16);GPBCON t; }void le…

道路裂缝,坑洼,病害数据集-包括无人机视角,摩托车视角,车辆视角覆盖道路

道路裂缝&#xff0c;坑洼&#xff0c;病害数据集 包括无人机视角&#xff0c;摩托车视角&#xff0c;车辆视角 覆盖道路所有问题 一共有八类16000张 1到7依次为: [横向裂缝, 纵向裂缝, 块状裂缝, 龟裂, 坑槽, 修补网状裂缝, 修补裂缝, 修补坑槽] 道路病害&#xff08;如裂缝、…