java类的对象构造,java面向对象程序设计的三大特性

  java类的对象构造,java面向对象程序设计的三大特性

  

目录

一、实验目的二、实验代码1.定义一个类我的程序,包含两个属性:2.在车辆类的基础上创建一个拖拉机(拖拉机)类3.组合实现汽车类5.通用串行总线接口程序设计6 .这个关键字主要有三个应用:7.请简述静电关键字的作用8.请简述极好的关键字的作用9.请简述最后的关键字的作用

 

  

一、实验目的

1.掌握面向对象的编程思想、类与对象;2.掌握类的封装性、继承性和多态性的作用;3.掌握成员变量和成员方法的特性、构造方法、托字符串方法、等于方法的使用;4.掌握这个、超级、最终、静态等关键字的使用;5.掌握接口及接口对象的使用;6.掌握包的定义与使用;7.掌握四种访问控制权限私有、默认、受保护、公共.

 

  

二、实验代码

 

  

1.定义一个类MyProgram,包含两个属性:

一个是私人的的整型属性数据,一个是私人的的线类型属性str,封装这两个属性的四个方法setData()和getData()、setStr()和getStr();重写转换对象为字符串方法(自定义格式);重写等于方法(属性数据和属性潜艇用热中子反应堆(海底热反应堆的缩写)均相同才表示两个对象相等)。并编写测试程序,测试我的程序类的使用。

 

  包裹作业练习.测试2公共类我的程序{ public static void main(String[]args){ Test t1=new Test();测试T2=新测试();t1。setstr( A );T2。setstr( B );t1。setdata(1);T2。setdata(2);系统。出去。println(t1。equals(T2));系统。出去。println(t1。tostring());系统。出去。println(T2。tostring());} }类测试{私有字符串潜艇用热中子反应堆(submarine thermal reactor的缩写)私有(同Internationalorganizations)国际组织数据;公共字符串getStr(){ return str;} public void setStr(String str){ this。str=str} public int get data(){ return data;} public void setData(int data){ this。数据=数据;}@Overridepublic布尔等于(Object对象){ Test Test=(Test)对象;如果(测试。get data()==this。获取数据()测试。getstr()==this。getstr()){返回true}否则{返回false} } @覆盖公共字符串toString(){ return str为这个。getstr() t数据为:这个。get data();}}

  

2. 在Vehicle类的基础上创建一个Tractor(拖拉机)类

它不仅拥有行程、轮数、载重、行驶速度四个属性和DriveAt()方法,而且还拥有自己的犁()方法,在该方法中要求能够显示旅程、轮数、装载量三个属性的值。请编写测试类,调用驾驶()、犁()方法。

 

  包裹作业练习.测试2公共类车辆{公共浮动旅程;公共整数轮数公共内部驱动速度公共交通工具(){ journey=100.3 f wheel num=4;负载数量=1;} public void drive at(int speed){ if(speed=60){ system。出去。println(行车速度太快,容易造成事故);driveSpeed=40 } else { system . out . println(你在安全行驶速度内行驶);驱动速度=速度;} } }包作业练习.测试2公共类拖拉机扩展车辆{ public void plough(){ system。出去。println(公里数:这个。旅程);System.out.println(车速: this.driv

  eSpeed);System.out.println("承载量:"+this.loadNum);}public static void main(String[] args) {Tractor t = new Tractor();t.plough();t.driveAt(80);t.plough();}}

 

  

3. 组合实现汽车类

问题描述:一辆Car有(has)四个轮子(Wheels)和一个发动机(Engine)。现在要求用组合方法设计类Car、类Wheel和类Engine。

 

  (1) 类Engine 有字符串属性type记录发动机的型号;

  有构造方法,可设置发动机的型号;

  有方法start()启动引擎(输出发动机型号和字符串starts的)。

  (2)类Wheel有字符串属性type记录轮胎的型号,有整数类型属性index记录当前轮胎编号(1:front-left,2:front-right,3:back-left,4:back-right);

  有构造方法,可设置轮胎的型号和编号;

  有方法roll()表示轮胎正在转动(输出轮胎型号、轮胎位置和rolling的字符串)。

  (3)类Car有字符串属性model记录轿车的型号,有属性wheels[]和engine,分别是Wheel类对象数组和Engine类对象;

  有构造方法,参数是三个字符串,分别表示轿车的型号、轮胎型号和发动机的型号;

  有方法changeWheel()可以改变指定轮胎的型号;

  有方法start(),先输出轿车型号和字符串firing,然后调用Engine的start(),再调用所有轮胎的roll(),最后显示轿车型号和字符串running。

  (4)编写测试程序测试上述所有方法。

  

package 作业练习.test2;class Engine extends Car {String type ;public void Engine(String type) {this.type = type;}void start() {System.out.println(type + " starts");}}class Wheel extends Car {String type ;int index = 0;public void Wheel(String type, int index) {this.type = type;this.index = index;}void roll() {System.out.println("wheel" + index + " " + type + " rolling");}}public class Car {String model;static Wheel[] wheels;static Engine engine = new Engine();Car(String model, Wheel[] wheels, String eg) {this.model = model;this.wheels = wheels;engine.Engine(eg);}Car() {}public void changeWheel(int index, String str) {wheels[index - 1].Wheel(str, index);}void start() {System.out.println(model + " firing");engine.start();for (int i = 0; i < 4; i++) {wheels[i].roll();}}public static void main(String[] args) {Wheel[] wheels = new Wheel[4];String model = "玛莎拉蒂";String engine = "FSI2.0L";for (int i = 1; i <= 4; i++) {wheels[i - 1] = new Wheel();wheels[i - 1].Wheel("德国马牌", i);}Car car = new Car(model, wheels, engine);car.start();System.out.println("-----更改轮胎型号-----");car.changeWheel(2, "米其林");car.changeWheel(3, "倍耐力");car.start();}}

4. 有图形接口Shape

 

  有图形接口Shape,参照圆Circle类补充完整正方形Square和三角形Triangle类,并分析运行结果。

  

package 作业练习.test2;interface Shape {void draw();void erase();}class Circle implements Shape {public void draw() {System.out.println("Circle.draw()");}public void erase() {System.out.println("Circle.erase()");}}class Square implements Shape {public void draw() {System.out.println("Square.draw()");}public void erase() {System.out.println("Square.draw()");}}class Triangle implements Shape {public void draw() {System.out.println("Triangle.draw()");}public void erase() {System.out.println("Triangle.draw()");}}public class Shapes {public static Shape randShape() {switch ((int) (Math.random() * 3)) {default:case 0:return new Circle();case 1:return new Square();case 2:return new Triangle();}}public static void main(String[] args) {Shape[] s = new Shape[9];for (int i = 0; i < s.length; i++)s[i] = randShape();for (int i = 0; i < s.length; i++)s[i].draw();}}

 

  

5. USB接口程序设计

通常人们使用的计算机上都有USB接口,鼠标、键盘、麦克风等都可以连接到USB接口中使用。在计算机启动时,这些设备也随之启动;当计算机关闭时,这些设备也会随之关闭。鼠标、键盘、麦克风等USB接口设备都启动后,计算机才开机成功;当这些设备都关闭后,计算机才关机成功。

 

  读所编写的USB接口程序,该程序模拟了计算机的开机和关机过程,写出运行结果。

  

package 作业练习.test2.USB接口;public class Computer {private USB[] usbArr=new USB[4];//向计算机上连接一个USB设备public void add(USB usb){//遍历所有的插槽for(int i=0;i<usbArr.length;i++){//如果发现一个空的if(usbArr[i]==null){usbArr[i]=usb;break;}}}//计算的开机功能public void powerOn(){//遍历所有的插槽for(int i=0;i<usbArr.length;i++){//如果发现有设备if(usbArr[i]!=null){//将USB设备启动usbArr[i].turnOn();}}System.out.println("计算机开机成功!!!");}//计算的关机功能public void powerOff(){//遍历所有的插槽for(int i=0;i<usbArr.length;i++){//如果发现有设备if(usbArr[i]!=null){//将USB设备关闭usbArr[i].turnOn();}}System.out.println("计算机关机成功!!!");}}
package 作业练习.test2.USB接口;public class KeyBoard implements USB {@Overridepublic void turnOn() {System.out.println("键盘启动了......");}@Overridepublic void turnOff() {System.out.println("键盘关闭了......");}}
package 作业练习.test2.USB接口;public class Mic implements USB {@Overridepublic void turnOn() {System.out.println("麦克风启动了......");}@Overridepublic void turnOff() {System.out.println("麦克风关闭了......");}}
package 作业练习.test2.USB接口;public class Mouse implements USB {@Overridepublic void turnOn() {System.out.println("鼠标启动了......");}@Overridepublic void turnOff() {System.out.println("鼠标关闭了......");}}
package 作业练习.test2.USB接口;public class Test {public static void main(String[] args) {//实例化计算机对象Computer computer=new Computer();//向计算机中添加鼠标、麦克风、键盘computer.add(new Mouse());computer.add(new Mic());computer.add(new KeyBoard());//启动计算机computer.powerOn();//关闭计算机computer.powerOff();}}
package 作业练习.test2.USB接口;public interface USB {void turnOn();//启动void turnOff();//关闭}

 

  

6.this关键字主要有三个应用:

(1)this调用本类中的属性,也就是类中的成员变量;

 

  (2)this调用本类中的其他方法;

  (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。

  

 

  

7.请简述static关键字的作用

static是一个修饰符,用于修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。

 

  static修饰的方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都必须依赖具体的对象才能够被调用。static块可以优化程序性能,是因为它的特性:只会在类被初次加载的时候执行一次。

  

 

  

8.请简述super关键字的作用

super用于在 派生类中调用父类的重名方法,或者引用重名的变量。super被用在派生类中,就是为了明确调用父类的方法。

 

  

class base{int a = 100;}class sup1 extends base{int a = 200;void show(){System.out.println(a);System.out.println(a);}public static void main(String[] args){new sup1().show();}}

 

  

9.请简述final关键字的作用

final关键字可以用于三个地方。用于修饰类、类属性和类方法。被final关键字修饰的类不能被继承,被final关键字修饰的类属性和类方法不能被覆盖(重写);对于被final关键字修饰的类属性而言,子类就不能给他重新赋值了,如果重新赋值,会报错

 

  到此这篇关于Java类和对象的设计原理的文章就介绍到这了,更多相关Java类和对象 内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: