今天对继承与多态进行了深入学习,上笔记:
继承与多态: 1.不要为了继承而继承,在有关系时再继承 2.重写只能发生再子类,不能发生再父类 3.同一对象,引用不同的实例类,调用相同的方法,得到不同的结果就是多态。 4.多态是继承的一种表现,继承的表现是多态 5.使用多态创建的对象,在引用实例子类时,只能调用继承的方法。 6.super用于调用父类方法,大多时在构造方法中使用super()。 7.Object是所有类的父类 8.final ? ? 修饰类,此类不能被继 ?? ?修饰方法,此方法不能被重写; ?? ?修饰变量,此变量变为常量不能被更改; ?? ?修饰对象,此对象不能被其他实例类引用; 9.开发思想:面向过程--->面向对象--->面向接口--->面向切面
今天练习题(经反馈,以后的代码展示会尽可能的加上注释,使得更容易阅读。如果有多个类的话,会展示含有main方法的类,并展示运行结果):
1.编写程序实现披萨的制作。需求说明编写程序,接收输入信息,选择需要制作的披萨。可供选择的披萨有:培根披萨和海鲜披萨。? 实现思路及关键代码? 1)分析培根披萨和海鲜披萨。? 2)定义披萨类(作为父类)。? 属性:?名称、价格、大小;? 方法:展示哦(show);? 3)定义培根披萨和海鲜披萨,分别继承披萨类。? 4)定义披萨工厂类,根据输入信息生产具体的披萨对象。
package java_1210;
import java.util.Scanner;
public class PizzaTest {
public static void main(String[] args) {
//初始为p这个对象生成默认的普通披萨
Pizza p=new Pizza("披萨","5","中等");
System.out.print("现在我们可以加工一些披萨,你要加工哪种披萨呢?(经典、培根、海鲜):");
Scanner sc=new Scanner(System.in);
//让用户进行录入数据根据要求生成披萨
String type=sc.next();
if (type.equals("培根")) {
//使用多态将已经创建的对象再次接收子实例类,并进行判断
p=new BaconPizza("培根披萨","10","中等");
}else if (type.equals("海鲜")) {
p=new seafoodPizza("海鲜披萨","20","小");
}else{
//如果用户输入没有则返回默认
System.out.println("抱歉,你所输入的 "+type+" 类型暂无供应,正在为您制作默认披萨。");
}
//给用户信息反馈
System.out.println("您选择了 "+p.name+" 它的价格为: "+p.price+" 它的大小为: "+p.size);
//询问数量需求
System.out.print("您需要多少此类型的披萨?:"); int sum=sc.nextInt();
for (int i = 1; i <=sum ; i++) {
System.out.println("正在制作第 "+i+" 份披萨");
}
//将对象中价格从字符串转换为整数类型
Integer money= Integer.parseInt(p.price);
System.out.println("制作完成,一共支付"+(money*sum)+"$。");
}
}
?2.按要求编写一个Java应用程序: (1)定义一个类,描述一个矩形,包含有长、宽两种属性,和计算面积方法。 (2)编写一个类,继承自矩形类,同时该类描述长方体,具有长、宽、高属性,和计算体积的方法。 (3)编写一个测试类,对以上两个类进行测试,创建一个长方体,定义其长、宽、高,输出其底面积和体积。
package java_1210;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入 宽:");
int wide=sc.nextInt();
System.out.print("请输入 高:");
int high=sc.nextInt();
System.out.print("请输入 长:");
int length=sc.nextInt();
//创建子类的对象,输入数据并使用父类的属性以及方法
Cuboid c=new Cuboid(wide,high,length);
System.out.println("长方形的底面积为:"+c.area());
System.out.println("长方形的体积为:"+c.volume());
}
}
?3.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
4.一个数如果恰好等于它的因子之和,这个数就称为?"完数?"。例如6=1+2+3.编程?找出1000以内的所有完数
5.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在?第10次落地时,共经过多少米?第10次反弹多高?
package java_1210;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
topic3();
}
public static void go(){
Scanner sc=new Scanner(System.in);
System.out.print("请输入在1~9中随意输入数值:");
int num=sc.nextInt();
if (num<=9&&num>=1){
System.out.print("请输入相加多少次:");
int time=sc.nextInt();
System.out.println(topic1(num,time));
}else {
System.out.println("输入不规范,程序重启!");
go();
}
}
public static int topic1(int num,int time){
int sum=0;
int number=0;
for (int i = 0; i < time; i++) {
//每次都使初始数值*10+他自身,保证每一位都相同
number=number*10+num;
//把所有数值都加入总数中
sum+=number;
}
return sum;
}
public static void topic2(){
//从第二位开始,到第1000位结束
for (int i = 2; i <1000 ; i++) {
int sum=0;
for (int j = 1; j < i; j++) {
int t=i%j;//先循环得出这个数的因子
if (t==0) sum+=j;//将因子计入总数,总数将在外层循环开始时重置
}
//如果因子相加后的总数与这个当前数值相同则判断成立
if (sum==i) System.out.println(i+"是完数");
}
}
public static void topic3() {
double num=100;//设置一个初始高度位100的球
//让其弹跳10次
for (int i = 0; i < 10; i++) {
System.out.println("开始自由落下~~~~~~");
System.out.println("当前高度落下需经过:"+num+"米");
num/=2;
}
System.out.println("最终经过"+num+"米");
System.out.println("第十次反弹高度为:"+(num/2));
}
}
今天写的题比往常要少,但要更累一些,还是练的太少了,还要再加把劲。
冲! 冲! 冲!
|