多态的含义和作用 和向上转型和向下转型
2017-07-25 19:26
1016 查看
1. 多态的含义和作用
多态:多样化
多态允许将子类的对象当作父类的对象使用,某父类型的引用指向其子类
型的对象,调用的方法是该子类型的方法
多态的作用:
·大大提高程序的可复用性。
·可以提高可扩充性和可维护性。
2. 向上转型和向下转型
向上转型很安全,子类转成父类(父类出面,而子类做事)
向下转型:父类再转成原有的子类,通过强制转换
1. 编写程序实现比萨制作。需求说明编写程序,接收用户输入的信息,选择需要制作的比萨。可供选择的比萨有:培根比萨和海鲜比萨。
实现思路及关键代码
1) 分析培根比萨和海鲜比萨
2) 定义比萨类
3) 属性:名称、价格、大小
4) 方法:展示
5) 定义培根比萨和海鲜比萨继承自比萨类
6) 定义比萨工厂类,根据输入信息产生具体的比萨对象
程序运行结果如图所示
package com.pizza;
public class Pizza {
String name;
double price;
int size;
public Pizza(String name,double price,int size) {
this.name=name;
this.price=price;
this.size=size;
}
public void show(){
}
}
package com.pizza;
public class Peigpz extends Pizza{
int shuliang;
public Peigpz(String name,double price,int size,int
sl) {
super(name, price, size);
this.shuliang=sl;
}
public void show(){
System.out.println("名称:"+name);
System.out.println("价格:"+price+"元");
System.out.println("大小"+size+"寸");
System.out.println("培根个数:"+shuliang);
}
}
package com.pizza;
public class Haixpz extends Pizza{
String peiliao;
public Haixpz(String name,double price,int
size,String pl) {
super(name, price, size);
this.peiliao=pl;
}
public void show(){
System.out.println("名称:"+name);
System.out.println("价格:"+price+"元");
System.out.println("大小"+size+"寸");
System.out.println("配料:"+peiliao);
}
}
package com.pizza;
import java.util.Scanner;
public class PizzaFactory {
public static void main(String[] args) {
System.out.println("请选择想要制作的比萨(1.培根比萨2.海鲜比萨):");
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
if(i==1){
System.out.println("请输入培根个数:");
int gs=sc.nextInt();
System.out.println("请输入比萨大小:");
int size=sc.nextInt();
System.out.println("请输入比萨价格:");
int price=sc.nextInt();
Peigpz p=new Peigpz("培根比萨", 105, 12,25);
p.show();
}else if(i==2){
System.out.println("请输入配料信息:");
String info=sc.next();
System.out.println("请输入比萨大小:");
int size=sc.nextInt();
System.out.println("请输入比萨价格:");
int price=sc.nextInt();
Haixpz h=new Haixpz("海鲜比萨", 78, 10,"虾仁、鱿鱼卷、墨鱼");
h.show();
}
}
}
多态:多样化
多态允许将子类的对象当作父类的对象使用,某父类型的引用指向其子类
型的对象,调用的方法是该子类型的方法
多态的作用:
·大大提高程序的可复用性。
·可以提高可扩充性和可维护性。
2. 向上转型和向下转型
向上转型很安全,子类转成父类(父类出面,而子类做事)
向下转型:父类再转成原有的子类,通过强制转换
1. 编写程序实现比萨制作。需求说明编写程序,接收用户输入的信息,选择需要制作的比萨。可供选择的比萨有:培根比萨和海鲜比萨。
实现思路及关键代码
1) 分析培根比萨和海鲜比萨
2) 定义比萨类
3) 属性:名称、价格、大小
4) 方法:展示
5) 定义培根比萨和海鲜比萨继承自比萨类
6) 定义比萨工厂类,根据输入信息产生具体的比萨对象
程序运行结果如图所示
package com.pizza;
public class Pizza {
String name;
double price;
int size;
public Pizza(String name,double price,int size) {
this.name=name;
this.price=price;
this.size=size;
}
public void show(){
}
}
package com.pizza;
public class Peigpz extends Pizza{
int shuliang;
public Peigpz(String name,double price,int size,int
sl) {
super(name, price, size);
this.shuliang=sl;
}
public void show(){
System.out.println("名称:"+name);
System.out.println("价格:"+price+"元");
System.out.println("大小"+size+"寸");
System.out.println("培根个数:"+shuliang);
}
}
package com.pizza;
public class Haixpz extends Pizza{
String peiliao;
public Haixpz(String name,double price,int
size,String pl) {
super(name, price, size);
this.peiliao=pl;
}
public void show(){
System.out.println("名称:"+name);
System.out.println("价格:"+price+"元");
System.out.println("大小"+size+"寸");
System.out.println("配料:"+peiliao);
}
}
package com.pizza;
import java.util.Scanner;
public class PizzaFactory {
public static void main(String[] args) {
System.out.println("请选择想要制作的比萨(1.培根比萨2.海鲜比萨):");
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
if(i==1){
System.out.println("请输入培根个数:");
int gs=sc.nextInt();
System.out.println("请输入比萨大小:");
int size=sc.nextInt();
System.out.println("请输入比萨价格:");
int price=sc.nextInt();
Peigpz p=new Peigpz("培根比萨", 105, 12,25);
p.show();
}else if(i==2){
System.out.println("请输入配料信息:");
String info=sc.next();
System.out.println("请输入比萨大小:");
int size=sc.nextInt();
System.out.println("请输入比萨价格:");
int price=sc.nextInt();
Haixpz h=new Haixpz("海鲜比萨", 78, 10,"虾仁、鱿鱼卷、墨鱼");
h.show();
}
}
}
相关文章推荐
- 多态的使用和向上向下转型
- 继承父类的方法,父类方法的覆写。 向上转型后父类对象执行被覆写后的方法 向上转型后再向下转型 非多态强转? 多态的例子
- Java多态的“向上转型”和“向下转型”
- Java中多态以及向上转型和向下转型
- java多态向上、向下转型问题
- (转载)java多态(2)-------Java转型(向上或向下转型)
- java 什么是多态?多态的三种表现形式?什么是向上转型和向下转型?多态的利和弊?
- 多态使用中对象是向上转型或是向下转型的区别
- 面向对象之多态【向上转型与向下转型】
- Java多态 向上转型 向下转型
- 0905 Java中多态的向上转型和向下转型
- Java 多态部分 向上转型 向下转型
- Java多态(利用向上向下转型和反射机理)
- 理解java中向上向下转型(java多态原理)
- Java多态 向上转型 向下转型
- Java多态——向上转型与向下转型
- JAVA笔记-多态的意义(向上转型与向下转型)
- 多态中的向上转型和向下转型问题
- java多态中的向上转型和向下转型
- 面向对象_多态中向上转型和向下转型