面向对象实验

  • 实验要求
  • 实验过程

实验要求

1、修改Pet类为抽象类,Pet类中的eat方法为抽象方法,输出Dog信息

2、设计Bird、Fish类,都继承自抽象类Animal,实现其方法info(),并打印它们的信息。

3、Engine(引擎),具有power(功率,整数)属性,相对应的setter和getter方法,work()方法:输出"xx功率的发动机在运转"。Car(Engine轿车),具有Engine属性,相对应的setter和getter方法,run()方法,在方法中判断Engine对象是否为null,选择输出"发动机发动不了"或者"xx功率的发动机在运转,汽车在跑"。Benz(奔 驰),继承Car类,重写run()方法Driver(驾驶员),具有属性name(姓名),相对应的setter和getter方 法,driveCar(Benz benz)方法,在方法中输出“xxx 在开车”,并调用benz的run()方法。

4、写一个名为 Account 的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:账号id,余额 balance,年利率 annualInterestRate;包含的方法:访问器方法(getter 和setter 方法),返回月利率的方法 getMonthlyInterest(),取款方法 withdraw(),存款方法deposit()。创建 Account 类的一个子类 CheckAccount 代表可透支的账户,该账户中定义一个属性overdraft 代表可透支限额。在CheckAccount 类中重写 withdraw 方法,其算法如下:如果(取款金额<账户余额),可直接取款如果
(取款金额>账户余额),计算需要透支的额度判断可透支额 overdraft 是否足够支付本次透支需要,如果可以将账户余额修改为 0,冲减可透支金额如果不可以提示用户超过可透支额的限额

5、java类是否可以多继承,怎么实现多继承?

6、代码阅读

class A { int a = 1; double d = 2.0; void show() { System.out.println("Class A: a=" + a + "\td=" + d);}
}
class B extends A { float a = 3.0f; String d = "Java program."; void show() { super.show(); System.out.println("Class B: a=" + a + "\td=" + d);}
}
class Test{ public static void main(String[] args){ A a=new A(); a.show(); System.out.println(a.a);// A b=new B();// b.show();// System.out.println(b.a);}
}

7、代码阅读题

class Father { public int get() { return 1; }
}
class Sun extends Father { public long get() { return 2;}public static void main(String[] args) { Father s = new Sun(); System.out.println(s.get()); }
}

8、编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。

9、定义员工类Employee,包含姓名、工号和工资,包含计算奖金方法bonus,普通员工和经理都是员工,计算奖金的方法为工资*奖金系数,普通员工的奖金系数为1.5(常量),经理为2(常量),分别实现bonus方法,创建对象测试。

10、封装一个西游记人物类Person:包含私有属性:姓名(name)、身高(height)、武器(weapon)、种族(race),并提供get方法和set方法。在测试类中实例化三个对象:tangseng(唐僧)、sunwukong(孙悟空)、baigujing(白骨精),分别设置他们的种族为:人族、仙族、妖族在
打印对象时,按照例如:“姓名:孙悟空;种族:仙族”的格式在控制台输出信息。提供一个技能方法void skill(),这个方法根据当前对象name属性判断技能,如果是孙悟空,就打印“七十二变”,如果是唐僧,就打印“紧箍咒”,如果是白骨精,就打印“九阴白骨爪”,在测试类中调用这个方法。

11、阅读如下代码

class Super { int i = 0; public Super(String a) { System.out.println("A"); i = 1;}public Super() { System.out.println("B");i += 2; }
}
class Demo extends Super { public Demo(String a) { System.out.println("C"); i = 5; }public static void main(String[] args) { int i = 4; Super d = new Demo("A"); System.out.println(d.i);}
}

12、判断下列代码是否正确

class Super { int i = 0; public Super(String s) { i = 1; }
}
class Demo extends Super { public Demo(String s) {//默认有一句话super(); 去找父类的无参构造,但是没找到,//直接编译错。如何修改? super(s);i = 2;}public static void main(String[] args) { Demo d = new Demo("yes"); System.out.println(d.i); }
}

13、判断

//阅读以下代码,可以正常填入class Sun中的方法的是
class Father{ public String test(){ return "father";}
}
class Sun extends Father{}A.public void test(){}
B.public void test(String s){}
C.public String test(int i){return "";}
D.public int test(int i){return 1;}
E.public int test(){}

练习:1、某汽车租赁公司出租多种车辆,车型及租金情况如下:


实验过程

1、修改Pet类为抽象类,Pet类中的eat方法为抽象方法,输出Dog信息


2、设计Bird、Fish类,都继承自抽象类Animal,实现其方法info(),并打印它们的信息。


3、Engine(引擎),具有power(功率,整数)属性,相对应的setter和getter方法,work()方法:输出"xx功率的发动机在运转"。Car(Engine轿车),具有Engine属性,相对应的setter和getter方法,run()方法,在方法中判断Engine对象是否为null,选择输出"发动机发动不了"或者"xx功率的发动机在运转,汽车在跑"。Benz(奔 驰),继承Car类,重写run()方法Driver(驾驶员),具有属性name(姓名),相对应的setter和getter方 法,driveCar(Benz benz)方法,在方法中输出“xxx 在开车”,并调用benz的run()方法。



4、写一个名为 Account 的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:账号id,余额 balance,年利率 annualInterestRate;包含的方法:访问器方法(getter 和setter 方法),返回月利率的方法 getMonthlyInterest(),取款方法 withdraw(),存款方法deposit()。创建 Account 类的一个子类 CheckAccount 代表可透支的账户,该账户中定义一个属性overdraft 代表可透支限额。在CheckAccount 类中重写 withdraw 方法,其算法如下:如果(取款金额<账户余额),可直接取款如果
(取款金额>账户余额),计算需要透支的额度判断可透支额 overdraft 是否足够支付本次透支需要,如果可以将账户余额修改为 0,冲减可透支金额如果不可以提示用户超过可透支额的限额



5、java类是否可以多继承,怎么实现多继承?
  类只可以单继承,Java中接口可以实现多继承

6、代码阅读

class A { int a = 1; double d = 2.0; void show() { System.out.println("Class A: a=" + a + "\td=" + d);}
}
class B extends A { float a = 3.0f; String d = "Java program."; void show() { super.show(); System.out.println("Class B: a=" + a + "\td=" + d);}
}
class Test{ public static void main(String[] args){ A a=new A(); a.show(); System.out.println(a.a);A b=new B();b.show();System.out.println(b.a);}
}

Class A: a = 1 d = 2.0
1
Class A: a = 1 d = 2.0
Class B: a = 3.0 d = Java program.
1
多态调用时成员变量走前面的类,方法走后面的类

7、代码阅读题

class Father { public int get() { return 1; }
}
class Sun extends Father { public long get() { return 2;}public static void main(String[] args) { Father s = new Sun(); System.out.println(s.get()); }
}

2(同上一题一个概念)

8、编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。


9、定义员工类Employee,包含姓名、工号和工资,包含计算奖金方法bonus,普通员工和经理都是员工,计算奖金的方法为工资*奖金系数,普通员工的奖金系数为1.5(常量),经理为2(常量),分别实现bonus方法,创建对象测试。



10、封装一个西游记人物类Person:包含私有属性:姓名(name)、身高(height)、武器(weapon)、种族(race),并提供get方法和set方法。在测试类中实例化三个对象:tangseng(唐僧)、sunwukong(孙悟空)、baigujing(白骨精),分别设置他们的种族为:人族、仙族、妖族在
打印对象时,按照例如:“姓名:孙悟空;种族:仙族”的格式在控制台输出信息。提供一个技能方法void skill(),这个方法根据当前对象name属性判断技能,如果是孙悟空,就打印“七十二变”,如果是唐僧,就打印“紧箍咒”,如果是白骨精,就打印“九阴白骨爪”,在测试类中调用这个方法。



11、阅读如下代码

class Super { int i = 0; public Super(String a) { System.out.println("A"); i = 1;}public Super() { System.out.println("B");i += 2; }
}
class Demo extends Super { public Demo(String a) { System.out.println("C"); i = 5; }public static void main(String[] args) { int i = 4; Super d = new Demo("A"); System.out.println(d.i);}
}

B(对子类进行实例化时会调用父类的无参构造方法)
C
5

12、判断下列代码是否正确

class Super { int i = 0; public Super(String s) { i = 1; }
}
class Demo extends Super { public Demo(String s) {//默认有一句话super(); 去找父类的无参构造,但是没找到,//直接编译错。如何修改? super(s);i = 2;}public static void main(String[] args) { Demo d = new Demo("yes"); System.out.println(d.i); }
}

2

13、判断

//阅读以下代码,可以正常填入class Sun中的方法的是
class Father{ public String test(){ return "father";}
}
class Sun extends Father{}A.public void test(){}
B.public void test(String s){}
C.public String test(int i){return "";}
D.public int test(int i){return 1;}
E.public int test(){}

B、C、D

练习:1、某汽车租赁公司出租多种车辆,车型及租金情况如下:



JavaSE面向对象相关推荐

  1. Day06 JavaSE面向对象OOP(上) (Object-Oriented Programming)

    JavaSE 面向对象OOP(上) 一.面向对象概述 1 面向过程&面向对象区别 面向过程 第一步做什么,第二步做什么- 面向过程适合处理一些简单的问题. 面向对象 分类的思维模式,首先分类, ...

  2. JAVASE 面向对象

    面向对象 文章目录 面向对象 1.面向对象 1.1面向对象的特征 2.类和对象 2.1类 2.2对象 3.局部变量 & 成员变量的区别 4.值传递和引用传递 5.匿名对象 5.1匿名对象特点 ...

  3. JavaSE面向对象编程

    面向对象 Java 使用面向对象编程(Object-Oriented Programming,OOP),这是一种编程风格,它旨在使思考编程更接近思考现实世界. java 中的对象 在面向对象中,每个对 ...

  4. JavaSE面向对象学习笔记总结

    1,构造函数: 用于给对象进行初始化,是给与之对应的对象进行初始化,它具有正对性,函数中的一种. 特点: 1. 该函数的名称和所在的类的名称相同 2. 不需要定义返回类型 3. 该函数没有具体的返回值 ...

  5. JavaSE——面向对象高级(继承、final关键字、抽象类与接口、多态、Object类、内部类、包装类、可变参数)

    第3节 面向对象高级 一.继承 1.1 概述和使用 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法 ...

  6. JavaSE——面向对象进阶(封装、this、static、代码块、包、权限修饰符、main方法详解)

    第2节 面向对象进阶 一.封装与private 概述: 封装的意义在于保护或者防止代码(数据)被我们无意中破坏.保护成员属性,不让类以外的程序直接访问和修改. 封装原则: 隐藏对象的属性和实现细节,仅 ...

  7. JavaSE——面向对象基础(思想、类与对象、构造方法、重载、匿名对象)

    第1节 面向对象基础 一.面向对象思想 1.1 概述 面向对象(Object Oriented)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,是一种对现实世界理解和抽象的方法,是计算 ...

  8. JavaSE面向对象-笔记

    数组 1.数组的特点 1.其长度是确定的,数组一旦被创建,它的大小就是不可改变的 2.其元素必须相同类型,不允许出现混合类型 3.数组中的元素可以是任何数据类型,包括基本类型和引用类型 4.数组变量属 ...

  9. JAVASE面向对象基础

    概述 面向过程是一种自上而下的程序设计方法,主要思路专注于算法的实现 自上而下的设计方法,设计者用一个main函数概括出整个应用需要做的事情,然后把main方法拆解成不同的步骤,对应不同的函数 过程式 ...

最新文章

  1. leetcode310. Minimum Height Trees
  2. beego学习笔记(4):开发文档阅读(3)
  3. js/jq基础(日常整理记录)-2-一个简单的js方法实现集合的非引用拷贝
  4. 大佬的引用。。。。太猛了啊
  5. Linux 内核中的 cdev_alloc和cdev_add
  6. 面试突击 | Redis 如何从海量数据中查询出某一个 Key?视频版
  7. mysql并行dml_MySql的回顾九DML表数据的增,删,改,与DDL库表的增删改,约束
  8. matlab grp2idx,求教:m-fold cross validation 在matlab下如何实现?
  9. byte数组转double_java数组(不同类型的初始值)
  10. SharePoint2010 获取网站集SPSite,SPWeb对象的4种方法
  11. 3月12日 对极几何,本征矩阵,基础矩阵,F/E矩阵计算,恢复旋转与平移,三角化视图重建
  12. 15-基于51单片机的篮球计时器
  13. Python错误集锦:除法运算时提示ZeroDivisionError: division by zero
  14. 安装Bouncy Castle(JAVA)
  15. 极光短信在程序中(JAVA)的使用
  16. cacheable注解原理_@Cacheable的实现原理
  17. 趣拿整合线上线下营销,解决新品推广痛点
  18. NSSCTF ez_unserialize
  19. 天融信上网行为管理短信对接教程
  20. Attempted to serialize java.lang.Class: com.cao.bean.DmCategory. Forgot to register a type adapter?

热门文章

  1. TransUNet:Transformers Make Strong Encoders for Medical Image Segmentation用于医疗图像分割的transformers编码器详解
  2. 利用企业微信API实现天气机器人、故障报警机器人等
  3. oracle中间人投毒漏洞,Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)的完美解决方法...
  4. PyTorch数据归一化处理:transforms.Normalize及计算图像数据集的均值和方差
  5. 实验一.MATLAB求解优化问题
  6. java: 非法字符: ‘\ufeff‘解决方法
  7. 一篇快速入门各程序员都在使用的Typora的基础教程(20分钟快速掌握)
  8. 贝叶斯调参——bayes_opt
  9. Java的JDK和JRE
  10. C语言常用格式化符号