第一题:

设计一个形状类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. PMP项目管理学习笔记(5)——整合管理之制定项目章程

    关于两个输入 在很多过程中,会用到这两个输入: 企业环境要素 是关于你的公司如何开展业务所需要知道的所有信息. 在你计划项目时,有很多关于公司的信息会非常有用,你需要知道各个不同部门是如何运作的,你所 ...

  2. 在DLL中创建窗口时一个值得注意的地方 — UnregisterClass

    背景描述: 今天要测试一份注入代码,拿以前写的创建窗口的DLL来做测试. 第一次注入时一切正常,窗口被成功创建并显示,但在第二次加载时窗口没有显示出来. 经过研究发现在第二次加载DLL时Registe ...

  3. HDU 5380 Travel with candy (贪心,单调队列)

    题意: 有n+1个城市按顺序分布在同一直线上,现在需从0号城市按顺序走到n号城市(保证可达),从0号城市到i号城市需要消耗ai个糖果,每个城市都可以通过买/卖糖果来赚取更多的钱,价格分别是buyi和s ...

  4. codevs 1422 河城荷取

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 在幻想乡,河城荷取是擅长高科技工业的河童.荷取的得意之作除了光学迷彩外,还有 ...

  5. exit - 使程序正常中止

    SYNOPSIS 总览 #include <stdlib.h> void exit(int status); DESCRIPTION 描述 函数 exit() 使得程序正常中止,statu ...

  6. Gradle dependencies 依赖方式

    implementation:使用了该命令编译的依赖,仅仅对当前的Moudle提供接口 依赖首先应该设置为implement的,如果没有错,那就用implement,如果有错,那么使用api指令 那为 ...

  7. 第1节 flume:4、离线项目处理的整个架构图;5、flume的基本介绍;

    第1节 flume:4.离线项目处理的整个架构图 辅助系统工具:flume,azkaban,sqoop. 在一个完整的离线大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心 ...

  8. Ubuntu18.04 NVIDIA显卡驱动 安装大全

    离线安装NVIDIA显卡驱动 费了一天的劲,走了好多的坑,最主要的原因是gcc版本的问题,一定要用最新版本的gcc!!! 1)官网下载显卡驱动 2)apt 下载gcc包及其依赖包,可用apt-cach ...

  9. Android Studio中出现Gradle's dependency cache may be corrupt错误的解决办法

    起因 某次打开AS,提示升级AS,升级后,提示升级gradle,选择升级. 结果在升级gradle时耗时较久,没有耐心,点击停止升级gradle, 还是停在那里,然后关闭AS,还是没反应,启动任务管理 ...

  10. 01matplotlib

    一. 简介 1.概念 matplotlib:最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建. 2.作用 1)能将数据进行可视化,更直观的呈现 2)使 ...