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关键字 说明:因为时间紧 ...
随机推荐
- PMP项目管理学习笔记(5)——整合管理之制定项目章程
关于两个输入 在很多过程中,会用到这两个输入: 企业环境要素 是关于你的公司如何开展业务所需要知道的所有信息. 在你计划项目时,有很多关于公司的信息会非常有用,你需要知道各个不同部门是如何运作的,你所 ...
- 在DLL中创建窗口时一个值得注意的地方 — UnregisterClass
背景描述: 今天要测试一份注入代码,拿以前写的创建窗口的DLL来做测试. 第一次注入时一切正常,窗口被成功创建并显示,但在第二次加载时窗口没有显示出来. 经过研究发现在第二次加载DLL时Registe ...
- HDU 5380 Travel with candy (贪心,单调队列)
题意: 有n+1个城市按顺序分布在同一直线上,现在需从0号城市按顺序走到n号城市(保证可达),从0号城市到i号城市需要消耗ai个糖果,每个城市都可以通过买/卖糖果来赚取更多的钱,价格分别是buyi和s ...
- codevs 1422 河城荷取
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 在幻想乡,河城荷取是擅长高科技工业的河童.荷取的得意之作除了光学迷彩外,还有 ...
- exit - 使程序正常中止
SYNOPSIS 总览 #include <stdlib.h> void exit(int status); DESCRIPTION 描述 函数 exit() 使得程序正常中止,statu ...
- Gradle dependencies 依赖方式
implementation:使用了该命令编译的依赖,仅仅对当前的Moudle提供接口 依赖首先应该设置为implement的,如果没有错,那就用implement,如果有错,那么使用api指令 那为 ...
- 第1节 flume:4、离线项目处理的整个架构图;5、flume的基本介绍;
第1节 flume:4.离线项目处理的整个架构图 辅助系统工具:flume,azkaban,sqoop. 在一个完整的离线大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心 ...
- Ubuntu18.04 NVIDIA显卡驱动 安装大全
离线安装NVIDIA显卡驱动 费了一天的劲,走了好多的坑,最主要的原因是gcc版本的问题,一定要用最新版本的gcc!!! 1)官网下载显卡驱动 2)apt 下载gcc包及其依赖包,可用apt-cach ...
- Android Studio中出现Gradle's dependency cache may be corrupt错误的解决办法
起因 某次打开AS,提示升级AS,升级后,提示升级gradle,选择升级. 结果在升级gradle时耗时较久,没有耐心,点击停止升级gradle, 还是停在那里,然后关闭AS,还是没反应,启动任务管理 ...
- 01matplotlib
一. 简介 1.概念 matplotlib:最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建. 2.作用 1)能将数据进行可视化,更直观的呈现 2)使 ...