【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4)

这篇具有很好参考价值的文章主要介绍了【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4),JAVA,java,开发语言,后端,深度学习,阿里云,windows,逻辑回归

🌈个人主页: Aileen_0v0
🔥系列专栏:Java学习系列专栏
💫个人格言:"没有罗马,那就自己创造罗马~"

 【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4),JAVA,java,开发语言,后端,深度学习,阿里云,windows,逻辑回归

目录

继承

 私有成员变量在继承中的使用​编辑

 当子类和父类变量不重名时:

当子类和父类重名时:

 📝总结:

继承的含义:

toString方法的作用: 

重写和重载的区别


继承

package Inherit;

class Dog {
	public String name;
	public int age;
	
	public void barks() {
		System.out.println(name + "汪汪叫!");
	}
	public void eat() {
		System.out.println(name + "正在吃饭!");
	}
}

class Cat{
	public String name;
	public int age;
	
	public void eat() {
		System.out.println(name + "正在吃饭!");
	}
	public void CatchMouse() {
		System.out.println(name + "正在抓老鼠");
	}
}

public class Test{
	public static void main(String[] args) {
		
	}
}

【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4),JAVA,java,开发语言,后端,深度学习,阿里云,windows,逻辑回归

对比狗和猫这两个类,我们会发现它们有共同的属性,name,age 和 eat.

我们可以把它们相同的抽离出来,放到同一个Animal类里面.

【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4),JAVA,java,开发语言,后端,深度学习,阿里云,windows,逻辑回归

通过extends(继承)关键字,让子类继承父类

当子类继承父类之后,就会把属性和方法全部继承.

继承:就是抽取共性,从而达到代码的复用[重复使用]

【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4),JAVA,java,开发语言,后端,深度学习,阿里云,windows,逻辑回归

package Inherit;

class Animal{
	public String name;
	public int age;
	
	public void eat() {
		System.out.println(name + "正在吃饭!");
	}
}

class Dog extends Animal{
	public void barks() {
		System.out.println(name + "汪汪叫!"+"年龄"+ age);
	}


	
}

class Cat extends Animal{
	public void CatchMouse() {
		System.out.println(name + "正在抓老鼠");
	}
}

public class Test{
	public static void main(String[] args) {
		Dog dog = new Dog();
		//属性继承
		dog.name = "旺财";
		dog.age = 10;
		dog.barks();
		//方法继承
		dog.eat();
	}
}

 注意:

1.子类将父类中的成员变量或成员方法继承到子类中.

2.子类继承父类之后,必须要新添加自己特有的成员,体现它与父类的不同,否则没有必要进行继承.


 私有成员变量在继承中的使用

 注意:私有的成员 可以被继承 但是不能访问.

若想访问,我们可以通过 get和 set方法进行访问

代码如下:

package Inherit;

class Animal{
	private String name;
	public int age;
	
	public void eat() {
		System.out.println(name + "正在吃饭!");
	}
	

	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
}


class Dog extends Animal{
	public void barks() {
		System.out.println(getName() + "汪汪叫!"+"年龄"+ age);
	}


	
}

class Cat extends Animal{
	public void CatchMouse() {
		System.out.println(getName() + "正在抓老鼠");
	}
}

public class Test{
	public static void main(String[] args) {
		Dog dog = new Dog();
		//属性继承
		dog.setName("旺财");
		dog.age = 10;
		dog.barks();
		//方法继承
		dog.eat();
		
		
		Cat cat = new Cat();
		//属性继承
		cat.setName("喵喵");
		cat.age = 10;
		cat.CatchMouse();
		//方法继承
		cat.eat();
	}
}

【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4),JAVA,java,开发语言,后端,深度学习,阿里云,windows,逻辑回归


 当子类和父类变量不重名时:


package Inherit;

/**
 * 子类和父类不存在同名变量时
 */

class Base{
	int a;
	int b;
}
public class Derived extends Base{

	int c;
	public void method(){
		
		a = 10;//来自父类
		b = 20;//来自父类
		c = 30;
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
	}
	
	public static void main(String[] args) {
		Derived derived = new Derived();
		derived.method();
	}
}

控制台运行结果:

【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4),JAVA,java,开发语言,后端,深度学习,阿里云,windows,逻辑回归

当子类和父类重名时:

package Inherit;

/**
 * 子类和父类存在同名变量时
 */

class Base{
	int a;
	int b;
	
	public void methodA() {
		System.out.println("Base 中的methodA()");
	}
}

public class Derived extends Base{
	int a = 60;// 与父类成员 a 同名,类型相同 
	
	char b = 'o';//与父类成员 b 同名,不同类
	
	int c;
	
	public void methodB() {
		System.out.println("Derived 中的 methodB()方法");
	}
	
	public void methodC() {
		methodB();//访问子类自己的methodB()
        methodA();//访问父类继承的methodA()
//        methodD();//编译失败,在整个继承过程中没有发现方法
	}
	
	public void method(){
		
//		a = 10;//来自父类
		b = 20;//来自父类
		c = 30;
		
		System.out.println(super.a);
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
	}
	
	public static void main(String[] args) {
		Derived derived = new Derived();
		derived.method();

父类与子类重合,优先访问子类

控制台运行结果:

【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4),JAVA,java,开发语言,后端,深度学习,阿里云,windows,逻辑回归


 📝总结:

继承的含义:

抽取共性,通过子类继承(extends)父类,达到代码复用


toString方法的作用: 

在JAVA中,toString()方法是Object类中的一个方法,它的作用返回一个表示对象的字符串。当我们需要将一个对象转换为字符串时,可以使用toString()方法

如果我们没有重写该方法,则默认返回对象的类名和哈希码。

下面是一个toString()方法的代码案例:

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public static void main(String[] args) {
        Person person = new Person("Tom", 20);
        System.out.println(person.toString());
    }
}

在上面的代码中,我们定义了一个Person类,并重写了toString()方法,返回了一个包含name和age属性的字符串。在main方法中,我们创建了一个Person对象,并使用toString()方法将其转换为字符串并输出。


重写和重载的区别

JAVA官方语法文档链接🔗👉:The Java® Language Specification

通过ctrl + F 找到 overload重载

【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4),JAVA,java,开发语言,后端,深度学习,阿里云,windows,逻辑回归

重写和重载都是面向对象程序设计中的概念,它们的作用都是实现多态。但是它们的含义和实现方式是不同的

重载(Overload):指的是在同一个类内部或者父子类之间方法名相同,但是参数列表不同(参数类型、参数个数、参数顺序返回值类型可以是相同的也可以不同。这样的方法就叫做重载方法。

编译器根据调用时传递的不同参数,来确定调用的具体方法。

重写(Override):是指子类重写父类方法,方法名、参数列表、返回值类型与父类相同。这时候子类中的方法会覆盖掉父类中的方法,实现多态

下面是一些示例代码:

重载:

public class OverloadExample {
    public int add(int a, int b) {
        return a + b;
    }

    public int add(int a, int b, int c) {
        return a + b + c;
    }
}

重写:

public class OverrideExample {
    public static void main(String[] args) {
        Animal animal = new Dog();
        animal.eat();
    }
}

class Animal {
    public void eat() {
        System.out.println("Animal is eating");
    }
}

class Dog extends Animal {
    @Override
    public void eat() {
        System.out.println("Dog is eating");
    }
}

在上面的重写示例中,Dog 类继承自 Animal 类,重写了 eat() 方法。使用多态的方式创建了一个 Animal 类对象 animal,然后调用 eat() 方法,实际调用的是 Dog 类中重写的 eat() 方法,输出 "Dog is eating"。

 【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4),JAVA,java,开发语言,后端,深度学习,阿里云,windows,逻辑回归

【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4),JAVA,java,开发语言,后端,深度学习,阿里云,windows,逻辑回归文章来源地址https://www.toymoban.com/news/detail-755007.html

到了这里,关于【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++杂货铺】初识类和对象

    📖 面向过程 C语言是 面向过程的 ,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。以洗衣服这件事为例,下图是C语言完成洗衣服这件事的过程。 📖 面向对象 C++是 基于面向对象的 ,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完

    2024年02月16日
    浏览(36)
  • 【C++杂货铺】再谈类和对象

    在创建对象的时候,编译器通过调用构造函数,在构造函数体中,给对象中的各个成员变量一个合适的初值。 虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化, 构造函数体中的语句只能将其称为赋初值,而不能称作初

    2024年02月16日
    浏览(25)
  • 【C++杂货铺】模板

    📖 实现一个通用的交换函数 想要实现一个通用的交换函数不难,借助函数重载就可以。函数重载小伙伴们还记得嘛👀,忘了的小伙伴可以走传送门回去复习一下。如上面代码所示,我们借助函数重载实现了三份 Swap 函数,分别用来交换两个整型变量、两个双精度浮点型变量

    2024年02月09日
    浏览(33)
  • 【算法杂货铺】二分算法

    目录 🌈前言🌈 📁 朴素二分查找  📂 朴素二分模板 📁 查找区间端点处 细节(重要)  📂 区间左端点处模板  📂 区间右端点处模板 📁 习题 1. 35. 搜索插入位置 - 力扣(LeetCode) 2. 69. x 的平方根 - 力扣(LeetCode) 3.153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode)

    2024年04月13日
    浏览(31)
  • 【C++杂货铺】引用

    前言:  相信大家在学习C语言的时候,最头疼的就是指针,经常会碰到一级指针、二级指针,这些指针使用起来,稍有不慎就会等导致程序崩溃,为了让广大程序员少掉点头发,C++中提出了 引用 这一概念。当然,在C++的代码中,仍然可以兼容C语言的指针。  在语法上 引用

    2024年02月16日
    浏览(30)
  • 【Linux杂货铺】文件系统

    目录 🌈前言🌈 📁 硬盘  📂 物理结构  📂 存储结构  📂 CHS定址法  📂 操作系统对硬盘的管理和抽象 📁 文件系统  📂 分区  📂 分组  📂 inode号  分配  📂 逆向路径解析 分区挂载 目录作用 📁 总结         欢迎收看本期【Linux杂货铺】内容,本期主要讲解文件系

    2024年04月14日
    浏览(28)
  • 【C++杂货铺】内存管理

    从用途和存储的角度来看,在C/C++程序中有 局部数据、静态数据、全局数据、常量数据、动态申请的数据 五种主要的数据,各种数据的特点如下: 局部数据 :随用随创建,存储在栈区,作用域只在局部,生命周期在局部,出了作用域就销毁。 静态数据 :存储在数据段,作

    2024年02月16日
    浏览(27)
  • 【C++杂货铺】拷贝构造函数

    📖 定义 拷贝构造函数 是构造函数的一个重载 ,它的本质还是 构造函数 ,那就意味着,只有在创建对象的时候,编译器才会自动调用它,那他和普通的构造函数有什么区别呢? 拷贝构造函数,是创建对象的时候,用一个已存在的对象,去初始化待创建的对象 。简单来说,

    2024年02月16日
    浏览(37)
  • 【Linux杂货铺】操作系统

    目录 🌈前言🌈 📁 冯诺依曼体系结构 📂 拓展问题:程序为什么要被加载到内存? 📂 主机与主机的交互 📁 操作系统的概念  📂 作用  📂 理解“管理”  📂 系统调用 和 库函数的概念 📁 总结         欢迎收看本期【Linux杂货铺】,本期内容将讲解计算机中操作系统

    2024年03月13日
    浏览(35)
  • 【C++杂货铺】内管管理

    目录 🌈前言🌈 📁 C/C++中内存分布 📁 new 和 delete的使用 📁 new 和 delete的优点 📁 new 和 delete的原理  📂 operator new 和 operator delete函数  📂 内置类型  📂 自定义类型 📁 内存泄漏 📁 总结         欢迎收看本期【C++杂货铺】,本期内容讲解C++内存管理。包含了C++中内存

    2024年04月14日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包