java面向对象基础编程题
第一题:
设计一个形状类Shape,方法:求周长和求面积。形状类的子类:Rect(矩形),Circle(圆形)。
Rect类的子类:Square(正方形)。不同的子类会有不同的计算周长和面积的方法
1.总的父类
package com.num4_2;
/*设计一个形状类Shape,方法:求周长和求面积。形状类的子类:Rect(矩形),Circle(圆形)。
Rect类的子类:Square(正方形)。不同的子类会有不同的计算周长和面积的方法
*/
public class Shape {//形状类
public int chang;//定义长
public int kuan;//定义宽 /*public Shape() {
System.out.println("我是最大的父类");
}*/ public int zhouChang(int chang, int kuan){//求周长的方法
return 0;
}
public int mianJi(int chang,int kuan){//求面积的方法
return 0;
}
}
2.各个子类
package com.num4_2;
public class Circle extends Shape {//圆
private double r;//半径
private static double PI=3.14;
public Circle(){
System.out.println("这是一个无参构造方法");
}
public Circle(double r){
this.r=r;
}
public void zhouChang(){
//return PI*r*2;
System.out.println("圆的周长为:"+PI*r*2);
}
public void mianJi(){
System.out.println("圆的周长为:"+PI*r*r);
}
}
package com.num4_2;
public class Rect extends Shape{ //矩形
private int chang;
private int kuan;
public Rect(){
// System.out.println("这是一个无参的构造方法");
}
public Rect(int chang, int kuan){
this.chang=chang;
this.kuan=kuan;
}
public void zhouchang(){
System.out.println("矩形的周长为:"+(chang+kuan)*2);
}
public void mianji(){
System.out.println("矩形的面积为:"+chang*kuan);
}
}
package com.num4_2;
public class Square extends Rect { //正方形
private int chang;
public Square(){
System.out.println("这是一个无参构造函数");
}
public Square(int chang){
this.chang=chang;
}
public void zhouChang(){
System.out.println("正方形的周长为:"+chang*4);
}
public void mianJi(){
System.out.println("正方形的面积为:"+chang*chang);
}
}
3.测试类
package com.num4_2;
public class Test {
public static void main(String[] args) {
/*Shape shape=new Shape();
shape.chang=2;
shape.kuan=4;//无效
shape.mianJi(2,3);
shape.zhouChang(2,4);*/
Circle circle=new Circle(3);
circle.mianJi();
circle.zhouChang();
Square square=new Square(5);
square.mianJi();
square.zhouChang();
Rect rect=new Rect(2,3);
rect.mianji();
rect.zhouchang();
Shape shape = new Shape();
}
}
第二题:
设计一个台灯类(Lamp)其中台灯有灯泡类(Buble)这个属性,还有开灯(on)这个方法。
设计一个灯泡类(Buble),灯泡类有发亮的方法,其中有红灯泡类(RedBuble)和绿灯泡类(GreenBuble)
他们都继承灯泡类(Buble)一个发亮的方法。
1.个各类
package com.num4_3;
/*设计一个台灯类(Lamp)其中台灯有灯泡类(Buble)这个属性,还有开灯(on)这个方法。
设计一个灯泡类(Buble),灯泡类有发亮的方法,其中有红灯泡类(RedBuble)和绿灯泡类(GreenBuble)
他们都继承灯泡类(Buble)一个发亮的方法、*/
public class Lamp {// 台灯类
public Buble b;//初始化一个对象
public Lamp(Buble b){//有参的构造方法
this.b=b;
}
public void on(){
b.faLiang();//调用子类重写后的方法
}
}
package com.num4_3;
public class Buble {//灯泡类
public void faLiang(){
System.out.println("灯泡可以发亮");
}
}
package com.num4_3;
public class GreenBuble extends Buble {
@Override
public void faLiang(){
System.out.println("发绿光");
}
}
package com.num4_3;
public class RedBuble extends Buble {
@Override
public void faLiang(){
System.out.println("发红光");
}
}
2.测试类
package com.num4_3;
public class Test1 {
public static void main(String[] args) {
RedBuble redBuble=new RedBuble();
redBuble.faLiang();
}
}
第三题:
Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。
方法:double getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,
则公司会额外奖励100元。
SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪
HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。
属性:每小时的工资、每月工作的小时数
SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。
属性:月销售额、提成率
BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。
属性:底薪。
写一个程序,把若干各种类型的员工放在一个Employee数组里,
写一个方法,打印出某月每个员工的工资数额。
注意:要求把每个类都做成完全封装,不允许非私有化属性。
1.父类
package com.num4_5;
public class Employee {//员工类的父类
private String name;//员工的姓名
private int birthday;//生日
public String getName(){
return name;
} public void setName(String name) {
this.name = name;
}
public int getBirthday(){
return birthday;
}
public void setBirthday(int birthday) {
this.birthday = birthday;
} public void getSalary(int month){//方法:double getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日, } }
2.各个子类
package com.num4_5;
public class BasePlusSalesEmployee extends SalesEmployee {//销售人员,工资由月销售额和提成率决定。
private double xd;//具有薪底
public double getXd(){
return xd;
}
public void setXd(double xd){
this.xd=xd;
}
@Override
public void getSalary(int month){
double gz=(month==getBirthday())?(getXd()*getTcl()+xd+1000):(getXd()*getTcl()+xd);
System.out.println(getName()+month+"月份的工资为:"+gz+"元");
}
}
package com.num4_5;
public class HourlyEmployee extends Employee {//Employee的子类,按小时拿工资的员工
private double xsgz;//每小时的工资
private double hours;//每月工作的小时数
public double getXsgz(double xsgz) {
return xsgz;
}
public void setXsgz(double xsgz){
this.xsgz=xsgz;
}
public double getHours(double hours){
return hours;
}
public void setHours(double hours){//按小时拿工资的员工
this.hours=hours;
}
@Override
public void getSalary(int month){
double gz=(hours<=160)?(hours*xsgz):((hours-160)*xsgz*1.5)+(160*xsgz);//定义了一个工资的属性
if(month==getBirthday()){
System.out.println(getName()+month+"本月的工资为;"+(gz+1000)+"元");
}
else{
System.out.println(getName()+month+"本月的工资为;"+gz+"元");
}
}
}
package com.num4_5;
public class SalariedEmployee extends Employee{//拿固定工资的员工
public double yx;//属性:月薪
public double getYx(){
return yx;
}
public void setYx(double yx) {
this.yx = yx;
}
@Override
public void getSalary(int month){//方法:double getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,
/*if(month==birthday){
System.out.println(name+month+"本月的工资为;"+(yx+1000)+"元");
}
else{
System.out.println(name+month+"本月的工资为;"+(yx)+"元");
}*/
double gz=(month==getBirthday())?(yx+1000):yx;
System.out.println(getName()+month+"月份的工资为:"+gz+"元");
}
}
package com.num4_5;
public class SalesEmployee extends Employee {//销售人员
private double yxse;//月销售额
private double tcl;//提成率
public double getYxse(){
return yxse;
}
public void setYxse(double yxse){
this.yxse=yxse;
}
public double getTcl(){
return tcl;
}
public void setTcl(double tcl){
this.tcl=tcl;
}
@Override
public void getSalary(int month){
double gz=(month==getBirthday())?(yxse*tcl+1000):(yxse*tcl);
System.out.println(getName()+month+"月份的工资为:"+gz+"元");
}
}
3.测试类
package com.num4_5;
public class Test4_5 {
public static void main(String[] args) {
SalariedEmployee e1 = new SalariedEmployee();
e1.setName("张三");
e1.setBirthday(1);
e1.setYx(3000);
HourlyEmployee e2 = new HourlyEmployee();
e2.setName("李四");
e2.setBirthday(2);
e2.setXsgz(10);
e2.setHours(160);
SalesEmployee e3 = new SalesEmployee();
e3.setName("王五");
e3.setBirthday(3);
e3.setYxse(10000);
e3.setTcl(0.1);
BasePlusSalesEmployee e4 = new BasePlusSalesEmployee();
e4.setName("王五");
e4.setBirthday(3);
e4.setYxse(10000);
e4.setTcl(0.1);
e4.setXd(2000);
Employee[] e = {e1,e2,e3,e4};//数组
for (Employee em : e) {
System.out.println(em.getName());
}
/* for(Employee AM;AM<e.length;){
System.out.println(AM.getName());
}
*/
for (int i = 1; i < 13; i++) {
System.out.println("------------第"+i+"月工资表------------");
e1.getSalary(i);
e2.getSalary(i);
e3.getSalary(i);
e4.getSalary(i);
}
}
}
java面向对象基础编程题的更多相关文章
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类
078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...
- 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder
[重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final ...
- 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符
[重走Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符 1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数 ...
- Java面向对象 网络编程 下
Java面向对象 网络编程 下 知识概要: (1)Tcp 练习 (2)客户端向服务端上传一个图片. (3) 请求登陆 (4)url 需求:上传图片. 客户端: ...
- Java面向对象 网络编程 上
Java面向对象 网络编程 上 知识概要: (1)网络模型 (2)网络通讯要素 (3)UDP TCP 概念 (4)Socket (5)UDP TCP 传输 ...
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...
- 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字
084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...
随机推荐
- 使用libsvm实现文本分类
@Hcy(黄灿奕) 文本分类,首先它是分类问题,应该对应着分类过程的两个重要的步骤,一个是使用训练数据集训练分类器,另一个就是使用测试数据集来评价分类器的分类精度.然而,作为文本分类,它还具有文本这样 ...
- Linux一些常用小命令
使用xshell连接虚拟机 rz 上传的linux服务器 sz 从服务器上下载 df 查看磁盘大小 -h du 查看所有磁盘(硬盘)大小(-h 可读 -s统计当前目录的大小)du -sh free ...
- ES6对象和数组解构
解构可以避免在对象赋值时再生成多余的中间变量: function foo() { return [1,2,3]; } let arr = foo(); // [1,2,3] let [a, b, c] ...
- C-基础:冒泡排序
#include <fstream> #include <iostream.h> //--------------------------------------------- ...
- Opencv竟然有中文资料
最近对于OpenCV看的较多,竟然不知不觉找到了一个中文网站,对于母语真的桥开心的嘻嘻 直方图均衡化: http://www.opencv.org.cn/opencvdoc/2.3.2/html/do ...
- Spring框架 aop操作的注解方法 基于aspectj的自动注解aop方法 抽取相同的value="execution(public void cn.itcast.f_aspect.CRUD.*())"
首先是在xml配置文件中配置好对象,然后开启aop的注解方法——即<aop:aspectj-autoproxy></aop:aspectj-autoproxy> xml代码如下 ...
- NFS和DHCP服务
1. NFS NFS,Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS: NFS允许一个系统在网络上与他人共享目录和文件 ...
- python 03 8/25-8/27 range 、randint
import random """字符串的操作中 三种方法,只包含左索引,不包含右索引""" hi= "bokeyuan pyth ...
- python 文件操作(二) 替换性修改文件内容
正常情况我们想要仅对文件某一行的内容进行修改,而不改变其他内容,在原文件的基础上不能修改,因为当我们对原文件进行写操作时,如果原文件里面有内容,就会清空,在这种情况下,只能对文件进行替换性修改:即重新 ...
- 【HDU 5934】Bomb(强连通缩点)
Problem Description There are N bombs needing exploding. Each bomb has three attributes: exploding r ...