第一题:

设计一个形状类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面向对象基础编程题的更多相关文章

  1. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

  2. 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类

    078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...

  3. 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder

    [重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder   1.String String是Java中的一个final ...

  4. 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符

    [重走Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符   1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数 ...

  5. Java面向对象 网络编程 下

    Java面向对象 网络编程  下 知识概要:                   (1)Tcp 练习 (2)客户端向服务端上传一个图片. (3) 请求登陆 (4)url 需求:上传图片. 客户端:   ...

  6. Java面向对象 网络编程 上

     Java面向对象 网络编程 上 知识概要:                     (1)网络模型 (2)网络通讯要素 (3)UDP TCP 概念 (4)Socket (5)UDP TCP 传输 ...

  7. 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结

    086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...

  8. 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用

    085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...

  9. 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字

    084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...

随机推荐

  1. c# 移除数组为空元素

    通过字符串分割取得的数组中,有的时候可能需要处理除掉数组元素值为空的情况,所以可以按照如下代码完成: string rs="";//需要分割的字符串 char[] chspilt= ...

  2. linux AC的应用详解

    NAME ac - 输出用户连接时间 总览 ac [ -d | --daily-totals ] [ -y | --print-year ] [ -p | --individual-totals ] ...

  3. 关于apache access log 统计的那些事儿

    统计APACHE ACCESS.LOG IP访问记录 可以根据自己的需要,统计很多,每个IP访问多少个页面等等! cat access.log-20090904 |awk '{print $3}'|s ...

  4. 区间DP入门

    所为区间DP,主要是把一个大区间拆分成几个小区间,先求小区间的最优值,然后合并起来求大区间的最优值. 区间DP最关键的就是满足最优子结构以及无后效性!! 例如像是石子合并和括号匹配这两类比较经典的模型 ...

  5. More Effective C++ - 章节二 : 操作符(operators)

    5. 对定制的 "类型转换函数" 保持警觉 允许编译器执行隐式类型转换,害处多过好处,不要提供转换函数,除非你确定需要. class foo { foo(int a = 0, in ...

  6. jQuery的on绑定click和直接绑定click区别

    状况之外 在之前的公司并没有遇到这个问题,也就没有深究.直到自己换了现在的公司,刚来第二天就开始写别人写到一半的项目,很无奈,不是原生就是jquery,由于项目急,已经来不及切换框架重新布局,只能继续 ...

  7. 数据结构实验3:C++实现顺序栈类与链栈类

      实验3 3.1 实验目的 熟练掌握栈的顺序存储结构和链式存储结构. 熟练掌握栈的有关算法设计,并在顺序栈和链栈上实现. 根据具体给定的需求,合理设计并实现相关结构和算法.3.2实验要求3.2.1 ...

  8. c#导出word文档

    为方便下次遇到不知道去哪找先把它存放在这里,以下是保存导出word主要类方法 public class BiultReportForm { /// <summary>word 应用对象 & ...

  9. 【转】亿级Web系统搭建——单机到分布式集群

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...

  10. 【RMAN】RMAN跨版本恢复(下)--大版本异机恢复

    [RMAN]RMAN跨版本恢复(下)--大版本异机恢复 BLOG文档结构图 ORACLE_SID=ORA1024G 关于10g的跨小版本恢复参考:http://blog.chinaunix.net/u ...