继承与多态
Posted 二十的十七
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承与多态相关的知识,希望对你有一定的参考价值。
第三章:继承与多态知识梳理
面向对象具有三大特性:封装、继承、多态
本章的内容:学习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));
小节:多态的目的就是提升整个项目设计上的灵活性和扩展性,是面向对象中非常重要的特征之一。重载关注的是同一个类中,方法名相同,参数不同的方法,调用的时候虽然方法名相同,但是根据参数进行区分,从而执行不同的方法体。而重写是发生在父类与子类中,子类对父类的方法重新实现,要求方法的返回值,方法名,方法参数都要相同,重写的方法访问修饰符要大于等于父类的方法的访问修饰符。
以上是关于继承与多态的主要内容,如果未能解决你的问题,请参考以下文章