本人在教授学生的时候发现java初学者普遍存在的问题就是动手能力比较差,对于java初学者来说,在学习过程中最好能有一套比较完整的课程作为引导来学习,于是总结了一些面向对象的编程题给大家来学习,如有不对的地方欢迎拍砖。
【练习题】01.类的成员变量(属性) 猜数字游戏 一个类A有一个成员变量(属性)v有一个初值100。定义一个类对A类的成员变量v进行猜。如果大了则提示大了小了则提示小了。等于则提示猜测成功。
public class Test{
public static void main(String[] args){
//定义一个猜测的变量
int guess = 50;
//创建A类的对象
A a = new A();
if(guess > a.v){
System.out.println("大了");
}
if(guess < a.v){
System.out.println("小了");
}
if(guess == a.v){
System.out.println("猜对了");
}
}
}
class A{
int v = 100;
}
【练习题】02.类的成员变量(属性) 请定义一个交通工具(Vehicle)的类其中有: 属性速度(speed)体积(size)等等 方法移动(move())设置速度(setSpeed(int speed))加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象并通过方法给它初始化speed,size的值并且通过打印出来。另外调用加速减速的方法对速度进行改变。
public class Vehicle{
int speed;
int size;
public void move(){
System.out.println("车开动了");
}
public void setSpeed(int sp){
speed = sp;
}
/**
*
加速,逐步加速
*/
public void speedUp(){
speed++;
}
/**
自定义的加速
*/
public void speedUp(int sp){
speed = speed + sp;
}
/**
*
加速,逐步减速
*/
public void speedDown(){
speed--;
}
/**
自定义的减速
*/
public void speedDown(int sp){
speed -= sp;
}
public void info(){
System.out.println("速度:"+speed+" 大小:"+size);
}
public static void main(String[] args){
//创建一个交通工具的对象
Vehicle v = new Vehicle();
v.speed = 0;
v.size = 5;
v.info();
//设置速度
v.setSpeed(10);
v.info();
//加速
v.speedUp();
v.info();
//测试自定义加速
v.speedUp(20);
v.info();
//减速
v.speedDown();
v.info();
v.speedDown(30);
v.info();
}
}
【练习题】03.类的成员变量(属性)与方法、在程序中经常要对时间进行操作但是并没有时间类型的数据。那么我们可以自己实现一个时间类来满足程序中的需要。 定义名为MyTime的类其中应有三个整型属性时hour分minute秒second为了保证数据的安全性这三个成员变量应声明为私有。 创建MyTime类对象并且初始化成员变量。 再定义diaplay方法用于将时间信息打印出来。 为MyTime类添加以下方法 addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。
public class MyTime{
//hour分minute秒second
private int hour;
private int minute;
private int second;
public void setHour(int hour){
this.hour = hour;
}
public int getHour(){
return hour;
}
public void setMinute(int minute){
this.minute = minute;
}
public int getMinute(){
return minute;
}
public void setSecond(int second){
this.second = second;
}
public int getSecond(){
return second;
}
public void display(){
System.out.println(hour+"时"+minute+"分"+second+"秒");
}
//加秒
public void addSecond(int sec){
this.second += sec;
}
public void subSecond(int sec){
this.second -= sec;
}
//加分钟
public void addMinute(int min){
this.minute += min;
}
public void subMinute(int min){
this.minute -= min;
}
//加小时
public void addHour(int hou){
this.hour += hou;
}
public void subHour(int hou){
this.hour -= hou;
}
}
class Test{
public static void main(String[] args){
//创建Mytime对象
MyTime mt = new MyTime();
mt.setHour(12);
mt.setMinute(23);
mt.setSecond(55);
mt.display();
//修改时间
mt.addHour(3);
mt.display();
mt.subMinute(10);
mt.display();
mt.addSecond(3);
mt.display();
}
}
【练习题】04. 编写Java程序模拟简单的计算器。 定义名为MyNumber的类其中有两个整型数据成员n1和n2应声明为私有。再为该类定义加addition、减subtration、乘multiplication、除division等公有成员方法分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建MyNumber类的对象赋予n1和n2初始值调用各个方法并显示计算结果。
public class MyNumber{
private int n1;
private int n2;
public void setN1(int n1){
this.n1 = n1;
}
public int getN1(){
return n1;
}
public void setN2(int n2){
this.n2 = n2;
}
public int getN2(){
return n2;
}
public int addition(){
return n1 + n2;
}
public int subtration(){
return n1 - n2;
}
public int multiplication(){
return n1 * n2;
}
public int division(){
return n1 / n2;
}
}
class Test1{
public static void main(String[] args){
MyNumber mn = new MyNumber();
mn.setN1(10);
mn.setN2(3);
int addResult = mn.addition();
System.out.println("加的结果:"+addResult);
int subResult = mn.subtration();
System.out.println("减的结果:"+subResult);
int mulResult = mn.multiplication();
System.out.println("乘的结果:"+mulResult);
int divResult = mn.division();
System.out.println("除的结果:"+divResult);
}
}
【练习题】05.类的成员变量与方法、构造方法 在程序中经常要对时间进行操作但是并没有时间类型的数据。那么我们可以自己实现一个时间类来满足程序中的需要。 定义名为MyTime的类其中应有三个整型成员时hour分minute秒second为了保证数据的安全性这三个成员变量应声明为私有。 为MyTime类定义构造方法以方便创建对象时初始化成员变量。 再定义diaplay方法用于将时间信息打印出来。 为MyTime类添加以下方法 addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。
public class MyTime{
//hour分minute秒second
private int hour;
private int minute;
private int second;
public MyTime(int hour, int minute, int second){
this.hour = hour;
this.minute = minute;
this.second = second;
}
public void display(){
System.out.println(hour+"时"+minute+"分"+second+"秒");
}
//加秒
public void addSecond(int sec){
this.second += sec;
}
public void subSecond(int sec){
this.second -= sec;
}
//加分钟
public void addMinute(int min){
this.minute += min;
}
public void subMinute(int min){
this.minute -= min;
}
//加小时
public void addHour(int hou){
this.hour += hou;
}
public void subHour(int hou){
this.hour -= hou;
}
}
class Test{
public static void main(String[] args){
//创建Mytime对象
MyTime mt = new MyTime(12, 32, 42);
mt.display();
//修改时间
mt.addHour(3);
mt.display();
mt.subMinute(10);
mt.display();
mt.addSecond(3);
mt.display();
}
}
【练习题】06.构造方法 编写Java程序模拟简单的计算器。 定义名为Number的类其中有两个整型数据成员n1和n2应声明为私有。编写构造方法赋予n1和n2初始值再为该类定义加addition、减subtration、乘multiplication、除division等公有成员方法分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象调用各个方法并显示计算结果。
public class MyNumber{
private int n1;
private int n2;
public MyNumber(int n1, int n2){
this.n1 = n1;
this.n2 = n2;
}
public void setN1(int n1){
this.n1 = n1;
}
public int getN1(){
return n1;
}
public void setN2(int n2){
this.n2 = n2;
}
public int getN2(){
return n2;
}
public int addition(){
return n1 + n2;
}
public int subtration(){
return n1 - n2;
}
public int multiplication(){
return n1 * n2;
}
public int division(){
return n1 / n2;
}
}
class Test1{
public static void main(String[] args){
MyNumber mn = new MyNumber(10, 3);
int addResult = mn.addition();
System.out.println("加的结果:"+addResult);
int subResult = mn.subtration();
System.out.println("减的结果:"+subResult);
int mulResult = mn.multiplication();
System.out.println("乘的结果:"+mulResult);
int divResult = mn.division();
System.out.println("除的结果:"+divResult);
}
}
【练习题】07.构造方法 编写Java程序用于显示人的姓名和年龄。 定义一个人类Person该类中应该有两个私有属性姓名name和年龄age。定义构造方法用来初始化数据成员。再定义显示display方法将姓名和年龄打印出来。 在main方法中创建人类的实例然后将信息显示。
public class Person{
String name;
int age;
public Person(){
}
public Person(String name){
this.name = name;
}
public Person(int age){
this.age = age;
}
public Person(String name, int age){
this.name = name;
this.age = age;
}
public void display(){
System.out.println("姓名:"+this.name+" 年龄:"+age);
}
public static void main(String [] args){
Person p = new Person();
p.display();
Person p1 = new Person("亮哥");
p1.display();
Person p2 = new Person(18);
p2.display();
Person p3 = new Person("李元霸", 16);
p3.display();
}
}
【练习题】08. 按要求编写一个Java应用程序:
(1)编写一个矩形类Rect,包含:
矩形的宽width;矩形的高height。
两个构造方法:
1.一个带有两个参数的构造方法,用于将width和height属性初化;
2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。
两个方法:
求矩形面积的方法area()
求矩形周长的方法perimeter()
public class Rect{
int width;
int height;
public Rect(int width, int height){
this.width = width;
this.height = height;
}
public Rect(){
width = 10;
height = 10;
}
public int area(){
return width * height;
}
public int perimeter(){
return 2*width + 2*height;
}
public static void main(String[] args){
//创建一个对象
//Rect r = new Rect(20, 30);
Rect r = new Rect();
//求面积
int area = r.area();
System.out.println("矩形的面积是:"+area);
//求周长
int preimeter = r.perimeter();
System.out.println("矩形的周长是:"+preimeter);
}
}
【练习题】09.类属性和类方法 定义一个类MyMath,提供基本的加减乘除(可以自己来扩展)功能,然后进行测试。
public class MyMath{
static double PI = 3.14;
public static int add(int a, int b){
return a + b;
}
public static int mul(int a, int b){
return a * b;
}
/**
圆的面积的计算
*/
public static double area(int r){
return PI*r*r;
}
/**
圆的面积的周长
*/
public static double getLong(int r){
return 2*PI*r;
}
public static void sortArr(int[] arr){
}
public static void max(int[] arr){
}
public static void min(int[] arr){
}
}
class Test{
public static void main(String[] args){
//调用圆的面积方法
double area = MyMath.area(10);
System.out.println("圆的面积:"+area);
//调用圆的周长
double myLong = MyMath.getLong(10);
System.out.println("圆的周长:"+myLong);
}
}
【练习题】10.构造方法与重载 为“无名的粉”写一个类class WuMingFen 要求: 1.有三个属性 面码:String theMa 粉的分量(两) int quantity 是否带汤 boolean likeSoup 2.写一个构造方法 以便于简化初始化过程 如 WuMingFen f1 = new WuMingFen("牛肉",3,true); 3.重载构造方法 使得初始化过程可以多样化 WuMingFen f2 = new WuMingFen("牛肉",2); 4.如何使得下列语句构造出来的粉对象是酸辣面码、2两、带汤的 WuMingFen f3 = new WuMingFen(); 5.写一个普通方法 check() 用于查看粉是否符合要求。即 将对象的三个属性打印在控制台上。
public class WuMingFen{
//面码
String theMa;
//粉的分量
int quantity;
//是否带汤
boolean likeSoup;
public WuMingFen(){
}
public WuMingFen(String theMa, int quantity, boolean likeSoup){
this(theMa, quantity);
this.likeSoup = likeSoup;
}
public WuMingFen(String theMa, int quantity){
this.theMa = theMa;
this.quantity = quantity;
}
public void check(){
System.out.println("面码:"+theMa+" 分量:"+quantity+" 是否带汤:"+likeSoup);
}
}
class Test{
public static void main(String[] args){
WuMingFen wmf = new WuMingFen();
wmf.theMa = "酸辣";
wmf.quantity = 2;
wmf.likeSoup = true;
wmf.check();
}
}
【练习题】11.构造方法的重载 定义一个名为Vehicles 交通工具 的基类 该类中应包含String类型的成员属性brand 商标 和color 颜色 还应包含成员方法run 行驶 在控制台显示“我已经开动了” 和showInfo 显示信息 在控制台显示商标和颜色 并编写构造方法初始化其成员属性。 编写Car 小汽车 类继承于Vehicles类 增加int型成员属性seats 座位 还应增加成员方法showCar 在控制台显示小汽车的信息 并编写构造方法。 编写Truck 卡车 类继承于Vehicles类 增加float型成员属性load 载重 还应增加成员方法showTruck 在控制台显示卡车的信息 并编写构造方法。 在main方法中测试以上各类。
public class Vehicles{
String brand;
String color;
public Vehicles(){
}
public Vehicles(String brand, String color){
this.brand = brand;
this.color = color;
}
public void run(){
System.out.println("我已经启动了");
}
public void showInfo(){
System.out.println("品牌:"+brand+" 颜色:"+color);
}
}
class Car extends Vehicles{
int seats;
public Car(String brand, String color, int seats){
super(brand, color);
this.seats = seats;
}
public void showCar(){
System.out.println("品牌:"+brand+" 颜色:"+color+" 座位的数量:"+seats);
}
}
class Trunck extends Vehicles{
float load;
public Trunck(String brand, String color, float load){
super(brand, color);
this.load = load;
}
public void showTrunck(){
System.out.println("品牌:"+brand+" 颜色:"+color+" 载重量:"+load);
}
}
class Test{
public static void main(String[] args){
Vehicles v = new Vehicles();
v.brand = "BMW";
v.color = "白色";
v.run();
v.showInfo();
Car c = new Car("奔驰","黑色", 5);
c.showCar();
Trunck t = new Trunck("五菱宏光", "黄色", 20.0f);
t.showTrunck();
}
}
【练习题】12.构造方法与重载 定义一个网络用户类 要处理的信息有用户ID、用户密码、email地址。在建立类的实例时 把以上三个信息都作为构造函数的参数输入 其中用户ID和用户密码时必须的 缺省的email地址是用户ID加上字符串"@gameschool.com"
public class User{
int id;
String password;
String email;
public User(int id, String password){
this.id = id;
this.password = password;
//email默认值
email = id+"@gameschool.com";
}
public User(int id, String password, String email){
this.id = id;
this.password = password;
this.email = email;
}
public void info(){
System.out.println("id:"+id+" 密码:"+password+" 邮箱:"+email);
}
}
class Test{
public static void main(String [] args){
User u = new User(1, "888888");
u.info();
User u1 = new User(2, "txjava8888", "[email protected]");
u1.info();
}
}
【练习题】13. 抽象类、继承、接口综合 设计一个系统 XXX门的实现过程 流程 设计一张抽象的门Door 那么对于这张门来说 就应该拥有所有门的共性 开门openDoor()和关门closeDoor() 然后对门进行另外的功能设计,防盗--theftproof()、防水--waterproof()、防弹--bulletproof()、防火--fireproof()、防锈--bulletproof()…… 要求 利用继承、抽象类、接口的知识设计该门
interface Door{
public void openDoor();
public void closeDoor();
}
abstract class AbsDoor implements Door{
String brand;
double price;
public final void windProof(){
System.out.println("这扇门有防风的功能");
}
public abstract void lock();
}
class TheftDoor extends AbsDoor{
public void lock(){
System.out.println("反锁 10道");
}
public void openDoor(){
System.out.println("指纹开门");
}
public void closeDoor(){
System.out.println("直接关闭门");
}
public void theftproof(){
System.out.println("我是一扇防盗门,正在保护中");
}
}
class BulletDoor extends AbsDoor{
public void lock(){
System.out.println("反锁 20道");
}
public void openDoor(){
System.out.println("升上去开门");
}
public void closeDoor(){
System.out.println("降下来关门");
}
public void bulletproof(){
System.out.println("我是一扇防弹门,正在保护中");
}
}
public class DoorTest{
public static void main(String[] args){
//创建一个防盗门
TheftDoor d = new TheftDoor();
d.brand = "熊猫";
d.price = 2000.0;
d.closeDoor();
d.windProof();
d.theftproof();
d.lock();
d.openDoor();
System.out.println("--------------------------------");
BulletDoor d1 = new BulletDoor();
d1.brand = "拓薪";
d1.price = 10000.0;
d1.closeDoor();
d1.windProof();
d1.bulletproof();
d1.lock();
d1.openDoor();
}
}
根据本人多年从业以及学习经验,录制了一套最新的Java精讲视频教程,如果你现在也在学习Java,在入门学习Java的过程当中缺乏系统的学习教程,你可以加QQ群654631948领取下学习资料,面试题,开发工具等,群里有资深java老师做答疑,每天也会有基础部分及架构的直播课,也可以加我的微信renlliang2013做深入沟通,只要是真心想学习Java的人都欢迎。
java基础教程:https://ke.qq.com/course/149432?tuin=57912c43
Java分布式互联网架构/微服务/高性能/springboot/springcloud:
https://ke.qq.com/course/179440?tuin=57912c43