zoukankan      html  css  js  c++  java
  • 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);
            }
    
        }
    }
  • 相关阅读:
    Go语言基础之指针
    Go语言基础之流程控制
    Go语言基础之函数
    Go语言基础之map
    Go语言基础之数组切片
    windows 10中使用命令行关掉占用指定端口的程序
    在window 10查看一下指定命令行工具所在的位置
    关闭掉mysql 8和mysql5.7的密码验证插件validate_password
    mysql 添加数据如果数据存在就更新ON DUPLICATE KEY UPDATE和REPLACE INTO
    使用MySQL yum源安装MySQL
  • 原文地址:https://www.cnblogs.com/lxx99/p/10968177.html
Copyright © 2011-2022 走看看