龙空技术网

Java 继承&抽象类习题答案

IT技术资源共享 304

前言:

而今大家对“java继承抽象类必须实现抽象方法吗”可能比较关心,兄弟们都需要学习一些“java继承抽象类必须实现抽象方法吗”的相关内容。那么小编也在网络上收集了一些对于“java继承抽象类必须实现抽象方法吗””的相关知识,希望看官们能喜欢,大家快快来学习一下吧!

础题目

第一题:概念辨析

1. 什么叫做类与类的继承,作用是什么?

就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。作用是子类复用父类内容。继承后,父类与子类之间,各成员有什么样的影响?成员变量:不重名,没有影响。重名,就近使用,使用super区分父类变量。构造方法:无影响,但是子类构造方法默认调用父类构造方法成员方法:不重名,没有影响。重名,子类重写父类方法。子类中,如何调用父类的成员?如何使用本类的成员?父类成员方法:super.方法名父类非私有成员变量:super.变量名子类成员方法:this.方法名子类成员变量:this.变量名抽象方法与普通成员方法有什么区别?抽象方法使用abstract关键字修饰,没有方法体。成员方法有方法体。抽象类与普通类有什么区别?方法:抽象类可以包含抽象方法和成员方法。普通类不可以包含抽象方法,只有成员方法。对象:抽象类不可以创建对象。普通类可以创建对象。

第二题:语法练习

语法点:继承,抽象类按步骤编写代码,效果如图所示:

编写步骤:定义抽象类A,抽象类B继承A,普通类C继承BA类中,定义成员变量numa,赋值为10,抽象showA方法。B类中,定义成员变量numb,赋值为20,抽象showB方法。C类中,定义成员变量numc,赋值为30,重写showA方法,打印numa,重写showB方法,打印numb,定义showC方法,打印numc。测试类中,创建C对象,调用showA方法,showB方法,showC方法。参考答案:

 	public class Test2 { 	 public static void main(String[] args) { 	 // 创建C对象 	 C c = new C(); 	 // 调用c 中方法 	 c.showA(); 	 c.showB(); 	 c.showC(); 	 } 	} 	 	abstract class A{ 	 int numa = 10; 	 public abstract void showA(); 	} 	 	abstract class B extends A{ 	 int numb = 20; 	 public abstract void showB(); 	} 	 	class C extends B{ 	 int numc = 30; 	 	 @Override 	 public void showA() { 	 System.out.println("A类中numa:"+numa); 	 } 	 	 @Override 	 public void showB() { 	 System.out.println("B类中numb:"+numb); 	 	 } 	 public void showC(){ 	 System.out.println("C类中numc:"+numc); 	 } 	}

第三题:语法练习

语法点:继承,抽象类按步骤编写代码,效果如图所示:

编写步骤:模拟农学院动物医疗系统信息。定义抽象家禽类(Poultry)私有成员变量:动物种类(name),症状(symptom),年龄(age), 病因(illness)提供空参和带参构造方法成员方法:抽象方法症状(showSymptom)普通方法基本信息(showMsg)提供setXxx和getXxx方法定义普通鸭子类(Duck)提供空参和带参构造方法重写showSymptom方法,打印症状信息。参考答案:

 	public class Test3 { 	 public static void main(String[] args) { 	 Duck duck = new Duck("鸭子", "感冒", "发烧", 2); 	 duck.showMsg(); 	 duck.showSymptom(); 	 } 	} 	 	/* 	1.定义抽象家禽类(Poultry) 	*/ 	abstract class Poultry { 	 //	i.成员变量(私有): 	 	 private String name; 	 private String illness; 	 	 // 症状(symptom) 	 private String symptom; 	 //	年龄(age) 	 private int age; 	 	 //	ii.成员方法: showSymptom 	 public abstract void showSymptom(); 	 	 // 成员方法: showMsg 	 public void showMsg() { 	 System.out.print("动物种类:" + name); 	 System.out.println(",年龄:" + age + "岁"); 	 System.out.println("入院原因:" + illness); 	 } 	 	 //	iii.提供空参和带参构造方法 	 public Poultry() { 	 super(); 	 } 	 	 public Poultry(String name, String illness, String symptom, int age) { 	 this.name = name; 	 this.illness = illness; 	 this.symptom = symptom; 	 this.age = age; 	 } 	 	 //	iv.提供setXxx和getXxx方法 	 public int getAge() { 	 return age; 	 } 	 	 public void setAge(int age) { 	 this.age = age; 	 } 	 	 public String getName() { 	 return name; 	 } 	 	 public void setName(String name) { 	 this.name = name; 	 } 	 	 public String getIllness() { 	 return illness; 	 } 	 	 public void setIllness(String illness) { 	 this.illness = illness; 	 } 	 	 public String getSymptom() { 	 return symptom; 	 } 	 	 public void setSymptom(String symptom) { 	 this.symptom = symptom; 	 } 	} 	 	// Duck 类 	 	class Duck extends Poultry { 	 	 public Duck() { 	 	 } 	 	 public Duck(String name, String illness, String symptom, int age) { 	 	 super(name, illness, symptom, age); 	 	 } 	 	 @Override 	 	 public void showSymptom() { 	 	 System.out.println("症状为:" + getSymptom()); 	 	 } 	 	}

第四题:语法练习

语法点:继承按步骤编写代码,效果如图所示:

编写步骤:模拟教学管理系统师生信息。定义Person类。属性:姓名、年龄构造方法:无参构造方法,有参构造方法成员方法:getXxx方法,setXxx方法,显示基本信息showMsg方法定义Teacher类,继承Person属性:学科构造方法:无参构造方法,有参构造方法成员方法:getXxx方法,setXxx方法,讲课方法定义Student类,继承Person属性:分数构造方法:无参构造方法,有参构造方法成员方法:getXxx方法,setXxx方法,考试方法参考答案:

 	 public class Test4 { 	 	 public static void main(String[] args) { 	 //		i.创建老师对象t,并把名称赋值为”王小平”,年龄赋值为30,工资赋值为8000 	 Teacher t = new Teacher("王小平", 30, "Java"); 	 //		iii.调用老师对象t的讲解方法 	 t.teach(); 	 	 //		iv.创建学生对象 s,并把名称赋值为”李小乐”,年龄赋值为14,成绩赋值为90分. 	 Student s = new Student("李小乐", 14, 90); 	 //		vi.调用学生对象 s 的考试方法 	 s.exam(); 	 } 	 } 	 	 class Person { 	 // 名称(name) 	 private String name; 	 //	年龄(age) 	 private int age; 	 	 //	空参构造 	 public Person() { 	 } 	 // 带参构造 	 public Person(String name, int age) { 	 this.name = name; 	 this.age = age; 	 } 	 // setXxx和getXxx方法 	 public String getName() { 	 return name; 	 } 	 	 public void setName(String name) { 	 this.name = name; 	 } 	 	 public int getAge() { 	 return age; 	 } 	 	 public void setAge(int age) { 	 this.age = age; 	 } 	 } 	 /* 	 2.定义老师类(Teacher),继承Person类 	 */ 	 class Teacher extends Person { 	 // course(科目) 	 private String course; 	 //	空参构造 	 public Teacher() { 	 } 	 //	带参构造方法 	 public Teacher(String name,int age, String course) { 	 super(name,age); 	 this.course = course; 	 } 	 	 //	提供setXxx和getXxx方法 	 public String getCourse() { 	 return course; 	 } 	 public void setCourse(String course) { 	 this.course = course; 	 } 	 	 public void teach() { 	 System.out.println(getName() +"老师,讲授"+course +"课"); 	 } 	 } 	 /* 	 3.定义学生类(Student),继承Person类 	 */ 	 class Student extends Person { 	 //	score(成绩) 	 private int score; 	 //	无参构造 	 public Student() { 	 super(); 	 } 	 //	带参构造 	 public Student(String name, int age,int score) { 	 super(name, age); 	 this.score = score; 	 } 	 	 //	提供setXxx和getXxx方法 	 public int getScore() { 	 return score; 	 } 	 public void setScore(int score) { 	 this.score = score; 	 } 	 	 public void exam(){ 	 System.out.println(getName()+"同学,考试得了:"+ score +"分"); 	 } 	 }

第五题:语法练习

语法点:继承按步骤编写代码,效果如图所示:

编写步骤模拟汽车网站信息。定义汽车Auto类属性:品牌,车长,价格定义SUV继承Auto类属性:小型车车长标准值:4295,中型车车长标准值:5070。定义判断车型方法判断小型车:小于小型车车长标准值判断大型车:大于中型车车长标准值判断中型车:大于小型车车长标准值并且小于等于中型车车长标准值测试类中,创建若干SUV对象,保存到集合,遍历集合,输出中型SUV。参考答案:

 	public class Test5 { 	 public static void main(String[] args) { 	 // 创建SUV对象 	 SUV suv1 = new SUV(5079, 750000); 	 SUV suv2 = new SUV(4813, 760000); 	 SUV suv3 = new SUV(4270, 127800); 	 SUV suv4 = new SUV(4545, 188800); 	 	 //添加到集合中 	 ArrayList<SUV> list = new ArrayList<>(); 	 list.add(suv1); 	 list.add(suv2); 	 list.add(suv3); 	 list.add(suv4); 	 			// 遍历集合,查询中型SUV 	 for (int i = 0; i < list.size(); i++) { 	 SUV suv = list.get(i); 	 if (suv.midSUV()){ 	 suv.showMsg(); 	 } 	 } 	 	 } 	 	} 	// 定义汽车类 	class Auto { 	 private String type; 	 private double length; 	 private double price;  	 	 public Auto() { 	 } 	 	 public Auto(String type, double length, double price) { 	 this.type = type; 	 this.length = length; 	 this.price = price; 	 } 	 	 public String getType() { 	 return type; 	 } 	 	 public void setType(String type) { 	 this.type = type; 	 } 	 	 public double getLength() { 	 return length; 	 } 	 	 public void setLength(double length) { 	 this.length = length; 	 } 	 	 public double getPrice() { 	 return price; 	 } 	 	 public void setPrice(double price) { 	 this.price = price; 	 } 		 	 public void showMsg() { 	 System.out.println("车型:" + type); 	 System.out.println("\t价格:" + price); 	 System.out.println("\t车长:" + length); 	 	 } 	 	} 	 	// 定义SUV类 	class SUV extends Auto { 	 // 车长标准 	 private int miniLength = 4295; 	 private int midLength = 5070; 	 	 public SUV(double length, double price) { 	 super("SUV", length, price); 	 } 		// 判断 小型车 	 public boolean miniSUV() { 	 return getLength() <= miniLength; 	 } 	 	 // 判断 大型车 	 public boolean largeSUV() { 	 return getLength() > midLength; 	 } 	 	 // 判断 中型车 	 public boolean midSUV() { 	 return getLength() > miniLength && getLength() <= midLength; 	 } 	}

标签: #java继承抽象类必须实现抽象方法吗 #java第五版课后答案解析 #java第二版第四章课后答案 #在java中抽象类之间也允许出现继承关系 #在java中抽象类之间也允许出现继承关系吗