Java面向对象练习题

逃离我推掉我的手 2024-04-17 17:19 161阅读 0赞

学了面向对象,我们来做几道基础题

面向对象基础

1、定义一个点类Point,包含2个成员变量x、y分别表示x和y坐标,2个构造器Point()和Point(int x0,y0),以及一个movePoint(int dx,int dy)方法实现点的位置移动,创建两个Point对象p1、p2,分别调用movePoint方法后,打印p1和p2的坐标。

代码演示

  1. public class Point {
  2. //成员变量
  3. private double x;
  4. private double y;
  5. //每一个类都带有一个默认的无参构造函数
  6. public Point() {
  7. super(); //表示父类的构造函数
  8. /*
  9. * 1.构造函数与类名完全一致
  10. * 2.不能带有返回值类型
  11. * 3.不需要return语句
  12. *
  13. * 作用:创建对象
  14. */
  15. }
  16. public Point(int x0,int y0) {
  17. this.x=x0;
  18. this.y=y0;
  19. }
  20. public void movePoint(int dx,int dy) {
  21. this.x+=dx;
  22. this.y+=dy;
  23. }
  24. public static void main(String[] args) {
  25. Point p1 = new Point (2,4);
  26. p1.movePoint(2, 4);
  27. System.out.println("p1坐标为:"+p1.x+","+p1.y);
  28. Point p2 = new Point (5,8);
  29. p2.movePoint(50, 120);
  30. System.out.println("p2坐标为:"+p2.x+","+p2.y);
  31. }

2、定义一个矩形类Rectangle:
2.1 定义三个方法:getArea()求面积、getPer()求周长,showAll()分别在控制台输出长、宽、面积、周长。
2.2 有2个属性:长length、宽width
2.3 通过构造方法Rectangle(int width, int length),分别给两个属性赋值
2.4 创建一个Rectangle对象,并输出相关信息

代码演示

  1. public class Rectangle {
  2. int length;
  3. int width;
  4. /*
  5. * static
  6. * 1.修饰变量:直接通过类名来访问
  7. * 2.修饰方法:也可以通过类名来访问
  8. * 3.修饰代码块:加载类的时候优先执行,并只执行一次
  9. *
  10. * 非静态方法可以访问静态方法和变量
  11. * 静态方法不可以访问非静态方法和变量
  12. */
  13. public int getArea() {
  14. int area=length*width;
  15. return area;
  16. }
  17. public int getPer() {
  18. return (length+width)*2;
  19. }
  20. public void showAll() {
  21. int l=this.length;
  22. int w=this.width;
  23. int a=length*width;
  24. int p=(length+width)*2;
  25. System.out.println("长:"+l+","+"宽:"+w+","+"面积:"+a+","+"周长:"+p);
  26. }
  27. public Rectangle (int length,int width) {
  28. this.length=length;
  29. this.width=width;
  30. }
  31. public static void main(String[] args) {
  32. Rectangle r=new Rectangle(5,5);
  33. r.showAll();
  34. }

设计一个类Student,该类包括姓名、学号和成绩。设计一个方法,按照成绩从高到低的顺序输出姓名、学号和成绩信息。

代码演示

  1. public class Student {
  2. String name;
  3. int empno;
  4. int grade;
  5. public Student(String name,int empno,int grade) {
  6. this.name=name;
  7. this.empno=empno;
  8. this.grade=grade;
  9. }
  10. public static void sort(Student[] s) {
  11. for(int i=1;i<s.length;i++) {
  12. for(int j=0;j<s.length-i;j++) {
  13. if(s[j].grade < s[j+1].grade) {
  14. Student t;
  15. t=s[j];
  16. s[j]=s[j+1];
  17. s[j+1]=t;
  18. }
  19. }
  20. }
  21. }
  22. public static void main(String[] args) {
  23. Student s1=new Student("小明", 1, 80);
  24. Student s2=new Student("小红", 2, 90);
  25. Student s3=new Student("小王", 3, 99);
  26. Student[] arr = {s1,s2,s3};
  27. sort(arr);
  28. for(Student is:arr) {
  29. System.out.println(is.name+"\t"+is.empno+"\t"+is.grade);
  30. }
  31. }

在这里插入图片描述

面向对象高级特性

1、创建一个球员类,并且该类最多只允许创建十一个对象。提示利
用static 和封装性来完成。

类的说明:
在这里插入图片描述
代码演示:

  1. public class Players {
  2. private static int sum;
  3. public Players() {
  4. super();
  5. System.out.println("创建了一个对象!");
  6. }
  7. public static Players create() {
  8. Players players=null;
  9. if(sum>=11) {
  10. System.out.println("创建的对象以超过11个!");
  11. }else {
  12. players=new Players();
  13. sum++;
  14. }
  15. return players;
  16. }
  17. public static void main(String[] args) {
  18. Players[] players=new Players[11];
  19. for(int i=0;;i++) {
  20. Players p=Players.create();
  21. if(p==null) {
  22. break;
  23. }else {
  24. players[i]=p;
  25. }
  26. }
  27. }
  28. }

结果:
在这里插入图片描述

2、设计2个类,要求如下:
2.1 定义一个汽车类Vehicle,
2.1.1 属性包括:汽车品牌brand(String类型)、颜色color(String类型)和速度speed(double类型)。
2.1.2 至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。
2.1.3 为属性提供访问器方法。注意:汽车品牌一旦初始化之后不能修改。
2.1.4 定义一个一般方法run(),用打印语句描述汽车奔跑的功能
2.1.5 在main方法中创建一个品牌为“benz”、颜色为“black”的汽车。
2.2 定义一个Vehicle类的子类轿车类Car,要求如下:
2.2.1 轿车有自己的属性载人数loader(int 类型)。
2.2.2 提供该类初始化属性的构造方法。
2.2.3 重新定义run(),用打印语句描述轿车奔跑的功能。
2.2.4 在main方法中创建一个品牌为“Honda”、颜色为“red”,载人数为2人的轿车。

代码演示:

  1. //Vehicle 类
  2. public class Vehicle {
  3. private String brand;
  4. private String color;
  5. private double speed;
  6. public String getBrand() {
  7. return brand;
  8. }
  9. // public void setBrand(String brand) {
  10. // this.brand = brand;
  11. // }
  12. public String getColor() {
  13. return color;
  14. }
  15. public void setColor(String color) {
  16. this.color = color;
  17. }
  18. public double getSpeed() {
  19. return speed;
  20. }
  21. public void setSpeed(double speed) {
  22. this.speed = speed;
  23. }
  24. public Vehicle() {
  25. super();
  26. // TODO Auto-generated constructor stub
  27. }
  28. public Vehicle(String brand, String color) {
  29. super();
  30. this.brand = brand;
  31. this.color = color;
  32. this.speed = 0;
  33. }
  34. public void run() {
  35. System.out.println("汽车奔跑");
  36. }
  37. public static void main(String[] args) {
  38. Vehicle v = new Vehicle("benz", "black");
  39. System.out.println("品牌:"+v.brand+"\n颜色:"+v.color+"\n速度:"+v.speed);
  40. v.run();
  41. }
  42. }
  43. //Car 类
  44. public class Car extends Vehicle{
  45. int loader;
  46. public Car(String brand,String color,int loader) {
  47. super(brand,color);
  48. this.loader=loader;
  49. }
  50. public void run() {
  51. System.out.println("品牌:"+getBrand()+"\r颜色:"+getColor()+"\r载人数:"+loader);
  52. System.out.println("轿车奔跑");
  53. }
  54. public static void main(String[] args) {
  55. Car c=new Car("Honda","red",2);
  56. c.run();
  57. }
  58. }

结果:
在这里插入图片描述
在这里插入图片描述

更多内容,等待后续更新!

发表评论

表情:
评论列表 (有 0 条评论,161人围观)

还没有评论,来说两句吧...

相关阅读