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关键字 说明:因为时间紧 ...
随机推荐
- 洛谷 P1803 凌乱的yyy
题目背景 快noip了,yyy很紧张! 题目描述 现在各大oj上有n个比赛,每个比赛的开始.结束的时间点是知道的. yyy认为,参加越多的比赛,noip就能考的越好(假的) 所以,他想知道他最多能参加 ...
- js中的函数编程
之前在网上看到了一篇教你如何用js写出装逼的代码. 经过学些以及扩展很有收获在这里记录一下. 原文章找不到了.所以就不在这附上链接了. 大家看下下面两段js代码. 上面两端代码效果是一模一样的,都是在 ...
- centos7 搭建jenkins
centos7 搭建jenkins.note 环境:VMware 虚拟机 centos 7+ jdk 1.8+ tomcat7+jenkins搭建好linux 服务器后,关闭防火墙 停止firewal ...
- 把txt格式数据制作成xml数据
txt格式数据: 代码: s1=""" <object> <name>{0}</name> <pose>Unspecifi ...
- ROI(Region of Interesting)
ROI(region of interest),感兴趣区域.机器视觉.图像处理中,从被处理的图像以方框.圆.椭圆.不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,ROI.在Halcon.Ope ...
- C++友元函数和运算符重载
非成员友元函数.成员友元函数和友元类 1.友元的作用: (1)友元提供了不同类的成员函数之间.类的成员函数与一般函数之间进行了数据共享的机制: 2.友元的优点和缺点 优点:提高程序的运行效率: 缺点: ...
- Hadoop-01 搭建hadoop伪分布式运行环境
Linux中配置Hadoop运行环境 程序清单 VMware Workstation 11.0.0 build-2305329 centos6.5 64bit jdk-7u80-linux-x64.r ...
- 如何在windows 2008 IIS7 上实现AD域的访问控制
1.服务器加入域 2.创建点站 3.对站站进行设置 3.1设置网站的连接模式 选中站点,在控制台右侧 选择 基本设置 => 选择 应用程序用户 3.2 开启访问模式 选择站点 => 身份验 ...
- xshell全局设置配色方案
新建XTerm1.xcs文件,将以下内容黏贴进去,保存退出 [XTerm] text=839496 cyan(bold)=93a1a1 text(bold)=408080 magenta=dd3682 ...
- JavaScript设计模式基础之面向对象的JavaScript(一)
动态语言类型与鸭子类型 此内容取自JavaScript设计模式与开发实践一书 编程语言按照数据类型大体可以分为2类,一类就是静态类型语言,另一类则是动态类型语言 静态类型语言也可以称之为编译语言,而动 ...