继承与多态(代码片段)

二十的十七 二十的十七     2022-12-22     548

关键词:

第三章:继承与多态知识梳理

面向对象具有三大特性:封装、继承、多态
本章的内容:学习Java中包的概念以及另外两大特征:继承和多态。

1.包的定义与使用

(1)Java中通过包来完成对类的管理,每个类都该存放在相应的包里。
(2)Java中的包其实就是文件夹的概念,用来管理Java的源代码文件的。

下面我们一起来看看Java中包如何创建与使用:

package com.game.dota;

public class Hero 



package com.game.test;

import java.util.Scanner;

import com.game.dota.Hero;

public class Mytest 

	public static void main(String[] args) 
		// TODO Auto-generated method stub
        Hero h=new Hero();
        Scanner sc=new Scanner(System.in);
        
	



总结:不同包之间的类使用时,需要使用import导入对应的包才能使用,而相同包下则可以直接识别。打包的快捷键是Ctrl+Shift+O。

2.继承的概念与使用
知识要点:继承是面向对象程序设计的一个重要特征,它是通过继承原有类派生出子类,进而构造出更为复杂的子类,子类既有新定义的子类特征,又继承了原有类的行为特征。

下面我们来看看Java中怎么实现继承以及继承中的关于子类父类的操作:

package com.test;

public class Spear extends Weapon
	
	public Spear(String name,int attackValue) 
		super(name, attackValue);
	
	

package com.test;

public class Sword extends Weapon

public Sword(String name,int attackValue) 
	super(name, attackValue);



package com.test;

public class Weapon 
	String name;
	int attackValue;
	public Weapon(String name,int attackValue) 
		this.name=name;
		this.attackValue=attackValue;
	
	public void attck() 
		System.out.println("武器名:"+this.name+"\\t攻击值:"+this.attackValue);
	


package com.test1;

import com.test.Spear;
import com.test.Sword;

public class MyTest2 

	public static void main(String[] args) 
		// TODO Auto-generated method stub
        Sword sw=new Sword("圣剑", 200);
        sw.attck();
        Spear sp=new Spear("长矛", 300);
        sp.attck();
        		
        		
	






总结:继承可以提高代码的复用性,减少相同代码的编码量。

3.Java中的多态
(1)多态从字面意思上解释其实就是一个事物的多种形态,比如生活中的水,在常温下是液体,在高温下是气体,在低温下是固体,Java中的方法,对象也有多态的体现。
(2)多态的两种体现:方法重载和方法重写

多态的定义与使用:

package com.game.test;


public class Mytest 

	public static void main(String[] args) 
		// TODO Auto-generated method stub
        System.out.println(1234);
        System.out.println("字符串");
        System.out.println(true);
	



注释:同一个调用,执行的功能不同。这就是多态的体现

package com.test;

public class Figure 
public String name;
public void attack() 
	

public void run() 
	System.out.println("英雄在奔跑");


package com.test;

public class Master extends Figure
public void attack() 
	System.out.println(this.name+"正在进行魔法攻击");


package com.test;

public class Warrior extends Figure
public void attack() 
	System.out.println(this.name+"正在进行物理攻击");


package com.test;

public class Test1 

	public static void main(String[] args) 
		// TODO Auto-generated method stub
		 Figure f1=new Warrior();
       f1.name="德玛西亚";
       f1.attack();
       Figure f2=new Warrior();
       f2.name="诡术妖姬";
       f2.attack();
	







注释:以上是关于重写方法的案例。

4.Java中的重载和重写
方法的重载是指在同一个类中同名不同参的方法,就是方法的名称相同,但是参数的个数和类型它不一样,这种就形成了一个重载,好,下面我们来一个例子的演示:

package com.test;

public class Book 
public float getPrice() 
	return 100;
	

public float getPrice(int page) 
	return (float)(page*0.1);

public float getPrice(int page,float discount) 
	return (float)(page*discount);


package com.test;

public class Test2 

	public static void main(String[] args) 
		// TODO Auto-generated method stub
		Book bk=new Book();
		System.out.println("默认的价格是:"+bk.getPrice());
		System.out.println("按图书页数计算价格是:"+bk.getPrice(600));
		System.out.println("按图书页数和折扣计算价格是:"+bk.getPrice(600, 0.9f));
		
	





小节:多态的目的就是提升整个项目设计上的灵活性和扩展性,是面向对象中非常重要的特征之一。重载关注的是同一个类中,方法名相同,参数不同的方法,调用的时候虽然方法名相同,但是根据参数进行区分,从而执行不同的方法体。而重写是发生在父类与子类中,子类对父类的方法重新实现,要求方法的返回值,方法名,方法参数都要相同,重写的方法访问修饰符要大于等于父类的方法的访问修饰符。

python继承与多态!(代码片段)

继承继承让我们更加容易实现类的扩展。子类是父类的拓展。classParentClass1:#定义父类1passclassParentClass2:#定义父类2passclassSubClass1(ParentClass1):#单继承,基类是ParentClass1,派生类是SubClasspassclassSubClass2(ParentClass1,ParentClass2):#python支持 查看详情

第四节——继承与多态(代码片段)

继承的学习一、继承的特性子类拥有父类非private的属性(成员变量,类似但不全是)、方法。子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。多态的学习一、多态的概念多态:同一个对象,在不同时... 查看详情

03继承与多态动手动脑(代码片段)

动手实验:继承条件下的构造方法调用运行TestInherits.java示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重... 查看详情

java继承与多态(代码片段)

目录一、继承1.1Java继承一父对多子,一子对一父,且纵深到顶1.2重写(overwrite)与重构(over) 1.3构造函数的继承1.4thisandsuper1.4.1this的意义1.4.2 this的特殊用法——this与构造函数1.4.3super的意义1.4.4super的特... 查看详情

java继承与多态(代码片段)

目录一、继承1.1Java继承一父对多子,一子对一父,且纵深到顶1.2重写(overwrite)与重构(over) 1.3构造函数的继承1.4thisandsuper1.4.1this的意义1.4.2 this的特殊用法——this与构造函数1.4.3super的意义1.4.4super的特... 查看详情

继承多态及方法重写重载(代码片段)

...多态与属性无关);(2)多态的存在要有3个必要条件:继承、方法重写、父类引用指向子类对象;(3)父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。/***---(1)多态是方法的多态,不死属... 查看详情

[实验6]类的继承与多态(代码片段)

一、实验目的1.理解类的继承和派生机制2.掌握派生类的定义和使用3.掌握派生类成员的标识与访问中同名覆盖原则、二元作用域分辨符和虚基类的用法4.掌握派生类构造函数和析构函数的定义及调用次序5.理解运算符重载的目的... 查看详情

c++多态(代码片段)

...al重载、覆盖(重写)、隐藏(重定义)的对比三、抽象类接口继承和实现继承四、多态的原理虚函数表多态的原理动态绑定与静态绑定五、单继承和多继承关系的虚函数表单继承中的虚函数表多继承中的虚函数表菱形继承、菱形虚拟... 查看详情

继承与多态——动手又动脑(代码片段)

...,它会依次调用父类的构造函数。以下是原因:当一个类继承了其它类时,在它的构造函数(constructor)中super()必须被首先调用,如果super()没有被调用,则编译器将在构造函数(constructor)的第一行插入对super()的调用。这就是为什么... 查看详情

c++多态详解(代码片段)

...隐藏)、重写(覆盖)的对比抽象类概念接口继承与实现继承原理虚函数表底层原理静态绑定和动态绑定小结单继承和多继承关系中的虚函数表单继承中的虚函数表多继承中的虚函数表概念多态,即多种形态&# 查看详情

java面对对象三大特征之继承多态(代码片段)

面对对象三大特征继承、多态继承1.继承的概念:2.继承的实现:3.继承的好处与弊端:4.super5.继承中的成员访问特点以及访问修饰符:JAVA中的访问修饰符6.方法重写以及继承的注意事项:多态1.多态的概念2.多态中成员访问特点3.多态的... 查看详情

面向对象--继承和多态(代码片段)

一、继承继承的类称为子类,被继承的类称为基类,父类,或超类。继承的优点:简化了代码提高了代码的健壮性提高了代码的安全性多态的前提缺点:耦合与内聚。耦合性越低,内聚性越高,代码越好。比如,有一个Animal类,... 查看详情

继承与多态(代码片段)

第三章:继承与多态知识梳理面向对象具有三大特性:封装、继承、多态本章的内容:学习Java中包的概念以及另外两大特征:继承和多态。1.包的定义与使用(1)Java中通过包来完成对类的管理,每个... 查看详情

继承和多态(代码片段)

1继承 子类获得父类的全部功能如果子类拥有与父类相同的功能,则调用子类的方法2多态 传入的任意类型,只要是父类或者子类,就会自动调用实际类型的方法(要有父类) 例:classStudent():  defgrade(self):  print(... 查看详情

继承与多态(代码片段)

继承概述由来多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。如图所示:其中,多个类可以称为子类,单独那一个类称为父类、超类(superclas... 查看详情

c++---多态(代码片段)

...rride重载,覆盖(重写),隐藏(重定义)的区别抽象类接口继承和实现继承多态的原理动态绑定与静态绑定单继承和多继承关系的虚函数表单继承中的虚函数表多继承中的虚函数表总结多态:多种形态 查看详情

c++多态(代码片段)

...义)的对比抽象类多态原理虚函数表原理与动静态绑定单继承与多继承关系的虚函数列表单继承的虚函数表多继承的虚函数表菱形虚拟继承继承与多态的常见问题多态的概念多态的概念:通俗来说,就是多种形态,具... 查看详情

继承与多态动手动脑(代码片段)

1.为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?构造函数是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建... 查看详情