Java日志第12天 2020.7.17

第五章 类的继承和多态

5.6综合实例

一般试卷中都有选择题,选择题又可分为单选择题和多选择题。其简单的流程图如图5-4所示。

 

 父类Question定义:

 

 子类SingleQuestion

 

 子类MultiQuestion

 

 测试类PaperDemo

 

 

5.8 上机练习

1.请分别定义父类People和子类Student,观察Student是如何共享父类属性和方法的。

public class People {
public String name;
public String sex;
public int age;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public String getSex(){
return sex;
}
public void setSex(String sex){
this.sex=sex;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
}

public class Student extends People {
private String deparetment;//系别
private String specialty;//专业
String name = super.name;
public void test(){
super.getAge();
}
}

2.在题1的People中定义final方法,然后在类Student中定义与该final相同的方法,观察Student的变化。

public class People {
public String name;
public String sex;
public int age;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public String getSex(){
return sex;
}
public void setSex(String sex){
this.sex=sex;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
public final void test1(){
}
private final void test2(){
}
}

public class Student extends People {
private String deparetment;//系别
private String specialty;//专业
String name = super.name;
public void test(){
super.getAge();
}
public void test1(){//父类权限为public,且被final修饰报错!
}
public void test2(){//父类权限为private,且被final修饰 不报错!
}
}

3.将题目1的父类People定义成抽象类,用子类Student来继承它。

public abstract class People {
public String name;
public String sex;
public int age;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public String getSex(){
return sex;
}
public void setSex(String sex){
this.sex=sex;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
public abstract void setValues(String name,String sex,int age);
}


public class Student extends People {
private String deparetment;//系别
private String specialty;//专业
String name = super.name;
public void test(){
super.getAge();
}
public void setValues(String name,String sex,int age){
super.name=name;
this.sex=sex;
this.age=age;
}

public static void main(String[] args) {
People people = new Student();
people.setValues("伍正云","男",25);
System.out.print(people.getName()+"\t"+people.getSex()+"\t"+people.getAge());
System.out.println();
}
}

 

 

 

今天把第五章学完了,感觉前边学的有点不扎实,明天开始第六章的同时,要往回看一看。

posted @   Gazikel  阅读(182)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示