Java面向对象练习题

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

面向对象基础

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

代码演示

public class Point {
	
	//成员变量
	private double x;
	private double y;
	
	//每一个类都带有一个默认的无参构造函数
	public Point() {
		super(); //表示父类的构造函数
		
		/*
		 * 	1.构造函数与类名完全一致
		 * 	2.不能带有返回值类型
		 * 	3.不需要return语句
		 * 
		 * 	作用:创建对象
		 */
	}
	public Point(int x0,int y0) {
		this.x=x0;
		this.y=y0;
	}
	
	public void movePoint(int dx,int dy) {
		this.x+=dx;
		this.y+=dy;
	}
	
	public static void main(String[] args) {
		Point p1 = new Point (2,4);
		p1.movePoint(2, 4);
		System.out.println("p1坐标为:"+p1.x+","+p1.y);
		
		Point p2 = new Point (5,8);
		p2.movePoint(50, 120);
		System.out.println("p2坐标为:"+p2.x+","+p2.y);
	}

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

代码演示

public class Rectangle {
	
	int length;
	int width;
	
	
	/*
	 * 	static
	 * 	1.修饰变量:直接通过类名来访问
	 * 	2.修饰方法:也可以通过类名来访问
	 * 	3.修饰代码块:加载类的时候优先执行,并只执行一次
	 * 
	 * 	非静态方法可以访问静态方法和变量
	 * 	静态方法不可以访问非静态方法和变量
	 */
	
	public int getArea() {
		int area=length*width;
		return area;
	}
	
	public int getPer() {
		return (length+width)*2;
	}
	
	public void showAll() {
		int l=this.length;
		int w=this.width;
		int a=length*width;
		int p=(length+width)*2;
		System.out.println("长:"+l+","+"宽:"+w+","+"面积:"+a+","+"周长:"+p);
	}
	
	public Rectangle (int length,int width) {
		this.length=length;
		this.width=width;
	}
	
	public static void main(String[] args) {
		Rectangle r=new Rectangle(5,5);
		r.showAll();
	}

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

代码演示

public class Student {

	String name;
	int empno;
	int grade;
	
	public Student(String name,int empno,int grade) {
		this.name=name;
		this.empno=empno;
		this.grade=grade;
	}
	
	public static void sort(Student[] s) {
		for(int i=1;i<s.length;i++) {
			for(int j=0;j<s.length-i;j++) {
				if(s[j].grade < s[j+1].grade) {
					Student t;
					t=s[j];
					s[j]=s[j+1];
					s[j+1]=t;
				}
			}
		}
	}
	
	public static void main(String[] args) {
		
		Student s1=new Student("小明", 1, 80);
		Student s2=new Student("小红", 2, 90);
		Student s3=new Student("小王", 3, 99);
		
		Student[] arr = {s1,s2,s3};
		
		sort(arr);
		
		for(Student is:arr) {
			System.out.println(is.name+"\t"+is.empno+"\t"+is.grade);
		}
		
	}

在这里插入图片描述

面向对象高级特性

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

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


public class Players {
	private static int sum;
	
	public Players() {
		super();
		System.out.println("创建了一个对象!");
	}

	public static Players create() {
		Players players=null;
		if(sum>=11) {
			System.out.println("创建的对象以超过11个!");
		}else {
			players=new Players();
			sum++;
		}
		return players;
	}
	
	public static void main(String[] args) {
		Players[] players=new Players[11];
		for(int i=0;;i++) {
			Players p=Players.create();
			if(p==null) {
				break;
			}else {
				players[i]=p;
			}
		}
		
	}
}

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

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人的轿车。

代码演示:

//Vehicle 类
public class Vehicle {
	private String brand;
	private String color;
	private double speed;
	
	
	
	public String getBrand() {
		return brand;
	}
//	public void setBrand(String brand) {
//		this.brand = brand;
//	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public double getSpeed() {
		return speed;
	}
	public void setSpeed(double speed) {
		this.speed = speed;
	}
	public Vehicle() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Vehicle(String brand, String color) {
		super();
		this.brand = brand;
		this.color = color;
		this.speed = 0;
	}
	public void run() {
		System.out.println("汽车奔跑");
	
	}
	public static void main(String[] args) {
		Vehicle v = new Vehicle("benz", "black");
		System.out.println("品牌:"+v.brand+"\n颜色:"+v.color+"\n速度:"+v.speed);
		v.run();
	}
}



//Car 类
public class Car extends Vehicle{
	int loader;

	public Car(String brand,String color,int loader) {
		super(brand,color);
		this.loader=loader;
	}
	
	public void run() {
		System.out.println("品牌:"+getBrand()+"\r颜色:"+getColor()+"\r载人数:"+loader);
		System.out.println("轿车奔跑");
	}
	
	public static void main(String[] args) {
		Car c=new Car("Honda","red",2);
		c.run();
	}
}

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

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

  • 21
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值