学了面向对象,我们来做几道基础题
面向对象基础
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();
}
}
结果:
更多内容,等待后续更新!