多态,final,抽象类

来源:互联网 发布:小米平板2怎么关闭优化 编辑:程序博客网 时间:2024/06/14 18:28

多态

多态的必要条件:要有继承,要有方法重写,父类引用指向子类对象

父亲出面接到工作,具体有他孩子去做这件事。
Object 对象类 他是所有java类的父类(根基类)
如果一个类没有继承任何类,这个类就继承了Object类
向上转型:子类转成父类,(父类出面,而子类做事)
向下转型:父类再转成原有的子类。(强制,注意类型转换异常)


super 代表父类本身 this 代表当前对象本身


== 和equals的区别
== 可以用来进行基本数据类型值的比较 int i =1;int j=1; i==j;// true
   引用数据类型==比较的是内存地址是否相等。
Person p1 = new Person();
Person p2 = new Person();
p1==p2; // false
equals 用来比较两个对象的内容是否相等;
String s1 = "abc";
String s2 = "abc";
s1.equals(s2);// true

A instanceof B 用来判断A对象和B对象是否是同一种类型 是返回true 否则返回false 

final 

 final 最终的,最后的,不变的
修饰属性:修饰一个变量,这个变量就变成了常量。
修饰方法:方法不能被子类重写。
修饰类:这个类不能被继承。

抽象类

抽象类:提供一种模版,提供抽象方法,抽象方法子类必须重写。保证子类的方法一致性,很好的实现多态。 
abstract :修饰类 类是变成抽象类。
修饰方法:方法变成抽象方法,抽象方法的意义是为了让子类重写,没有方法体;
抽象类的定义:一个被abstract修饰的类就是抽象类。
包含一个抽象方法的类是抽象类。(抽象类不一定会有抽象方法)
static final 修饰一个变量,变成全局常量 
abstract 抽象的
final 最终的

编写程序实现比萨制作。需求说明编写程序,接收用户输入的信息,选择需要制作的比萨。可供选择的比萨有:培根比萨和海鲜比萨。

实现思路及关键代码

1)        分析培根比萨和海鲜比萨

2)        定义比萨类

3)        属性:名称、价格、大小

4)        方法:展示

5)        定义培根比萨和海鲜比萨继承自比萨类

6)        定义比萨工厂类,根据输入信息产生具体的比萨对象

package com.pizza;/** * 披萨类 *  * @author Administrator * */public abstract class Pizza {String name;double price;double size;public abstract void info();// 定义一个工厂类public static Pizza getInstance(int i) {if (i == 1) {return new Pergen();} else if (i == 2) {return new Seafood();}return null;}}

package com.pizza;/** * 培根 * @author Administrator * */public class Pergen extends Pizza{@Overridepublic void info() {System.out.println("我是培根");}}

package com.pizza;/** * 海鲜 *  * @author Administrator * */public class Seafood extends Pizza {@Overridepublic void info() {System.out.println("我是海鲜");}}
package com.pizza;public class Test {public static void main(String[] args) {Pizza p1 = Pizza.getInstance(1);Pizza p2 = Pizza.getInstance(2);p1.info();p2.info();}}
编写程序实现软料购买:编写程序,接收用户输入的信息,选择购买的饮料。可供选择的饮料有:咖啡、矿泉水和可乐。其中,购买咖啡时可以选择:加糖、加奶还是什么都不加。购买可乐时可以选择:买可口可乐还是百事可乐。
package com.drink;/** * 饮料类 *  * @author Administrator * */public abstract class Drink {String name;String volume;public abstract void info();}
package com.drink;/** * 咖啡 * @author Administrator * */public class Coffee extends Drink{private String pl;@Overridepublic void info() {System.out.println("名称:"+name);System.out.println("配料:"+pl);System.out.println("容量:"+volume);}public String getPl() {return pl;}public void setPl(String pl) {this.pl = pl;}}
package com.drink;/** * 水类 * @author Administrator * */public class Water extends Drink{@Overridepublic void info() {System.out.println("名称:"+name);System.out.println("容量:"+volume);}}

package com.drink;/** * 可乐 *  * @author Administrator * */public class Cola extends Drink {private String pp;@Overridepublic void info() {System.out.println("名称:"+name);System.out.println("品牌:"+pp);System.out.println("容量:"+volume);}public String getPp() {return pp;}public void setPp(String pp) {this.pp = pp;}}

package com.drink;import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请选择:1.咖啡,2.矿泉水,3.可乐");switch (sc.nextInt()) {case 1:System.out.println("请输入购买的容量:");Coffee c = new Coffee();c.volume = sc.next();c.name = "咖啡";System.out.println("请选择配料:1.加糖,2.加奶,3.什么都不加");switch (sc.nextInt()) {case 1:c.setPl("加糖");break;case 2:c.setPl("加奶");break;case 3:c.setPl("什么都不加");break;}c.info();break;case 2:System.out.println("请输入购买的容量:");Water w = new Water();w.volume = sc.next();w.name = "矿泉水";w.info();break;case 3:System.out.println("请输入购买的容量:");Cola co = new Cola();co.volume = sc.next();co.name = "可乐";System.out.println("请选择品牌:1.可口可乐,2.百事可乐");switch (sc.nextInt()) {case 1:co.setPp("可口可乐");break;case 2:co.setPp("百事可乐");break;}co.info();break;}}}






原创粉丝点击