índice
1. Defina uma classe MyProgram, que contém dois atributos:
2. Crie uma classe Tractor com base na classe Vehicle
3. Combine para realizar a classe do carro
5. Programação da interface USB
6. Esta palavra-chave tem três aplicações principais:
7. Descreva resumidamente a função da palavra-chave estática
8. Descreva resumidamente a função da super palavra-chave
9. Descreva resumidamente o papel das palavras-chave finais
1. O objetivo do experimento
1. Dominar ideias, classes e objetos de programação orientada a objetos;
2. Compreender o papel do encapsulamento, herança e polimorfismo de classes;
3. Dominar as características das variáveis de membro e métodos de membro, métodos de construção, métodos toString e o uso de métodos equals ;
4. Domine o uso de palavras-chave como this , super , final , static, etc .;
5. Dominar o uso de interfaces e objetos de interface;
6. Dominar a definição e uso de pacotes;
7. Domine os quatro tipos de permissões de controle de acesso privado , padrão , protegido e público .
2. Código experimental
1. Defina uma classe MyProgram, que contém dois atributos:
É um atributo inteiro privado Data , é um atributo privado do tipo String STR , quatro propriedades de empacotamento desses dois métodos setData () e getData () , setStr () e getStr () ; sobrescrever o método toString (personalizado Format); reescrever o método equals (os atributos data e str são iguais para indicar que os dois objetos são iguais). E escreva um programa de teste para testar o uso da classe MyProgram .
package 作业练习.test2;
public class MyProgram {
public static void main(String[] args) {
Test t1=new Test();
Test t2=new Test();
t1.setStr("A");
t2.setStr("B");
t1.setData(1);
t2.setData(2);
System.out.println(t1.equals(t2));
System.out.println(t1.toString());
System.out.println(t2.toString());
}
}
class Test{
private String str;
private int data;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
@Override
public boolean equals(Object object) {
Test test =(Test) object;
if(test.getData()==this.getData()&&test.getStr() == this.getStr()) {
return true;
}
else {
return false;
}
}
@Override
public String toString() {
return "str为"+this.getStr()+"\tdata为:"+this.getData();
}
}
2. Crie uma classe Tractor com base na classe Vehicle
Ele não só tem os quatro atributos de viagem, wheelNum, LoadNum e driveSpeed e o método DriveAt (), mas também tem seu próprio método arado (), no qual os valores dos três atributos de viagem, wheelNum e LoadNum devem ser exibidos. Escreva uma classe de teste e chame os métodos DriveAt () e plow ().
package 作业练习.test2;
public class Vehicle {
public float journey;
public int wheelNum;
public int loadNum;
public int driveSpeed;
public Vehicle() {
journey = 100.3f;
wheelNum = 4;
loadNum = 1;
}
public void driveAt(int speed) {
if (speed >= 60) {
System.out.println("行车速度太快,容易造成事故");
driveSpeed = 40;
} else {
System.out.println("你在安全行驶速度内行驶");
driveSpeed = speed;
}
}
}
package 作业练习.test2;
public class Tractor extends Vehicle {
public void plough() {
System.out.println("公里数:"+this.journey);
System.out.println("车速:"+this.driveSpeed);
System.out.println("承载量:"+this.loadNum);
}
public static void main(String[] args) {
Tractor t = new Tractor();
t.plough();
t.driveAt(80);
t.plough();
}
}
3. Combine para realizar a classe do carro
Descrição do problema: um carro tem (tem) quatro rodas (rodas) e um motor (motor). Agora é necessário projetar a classe Carro, Roda e Motor com um método de combinação.
(1) A classe Engine possui um tipo de atributo string para registrar o modelo do motor;
Existe um método de construção e o modelo do motor pode ser definido;
Há um método start () para dar partida no motor (enviar o modelo do motor e a string "iniciar").
(2) A classe Wheel tem um tipo de atributo de string para registrar o modelo do pneu e um índice de atributo de tipo inteiro para registrar o número do pneu atual (1: frontal esquerdo, 2: frontal direito, 3: traseiro esquerdo, 4: traseiro direito);
Existe um método de construção e o modelo e o número do pneu podem ser definidos;
Há um método roll () para indicar que o pneu está girando (modelo do pneu de saída, posição do pneu e corda de "rolamento").
(3) A classe Car tem um atributo model string para registrar o modelo do carro, e tem os atributos wheels [] e engine, que são uma matriz de objetos da classe Wheel e objetos da classe Engine respectivamente;
Existe um método de construção e os parâmetros são três cadeias, que representam respectivamente o modelo do carro, o modelo do pneu e o modelo do motor;
Existe um método changeWheel () para alterar o modelo de pneu especificado;
Há um método start (), que primeiro produz o modelo do carro e a string "firing", depois chama a partida do motor (), depois chama o roll () de todos os pneus e, finalmente, exibe o modelo do carro e a string "running".
(4) Escreva um programa de teste para testar todos os métodos acima.
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. Há uma interface gráfica Forma, consulte a classe Círculo para complementar as classes Quadradas e Triângulo completas e analise os resultados da corrida.
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. Programação da interface USB
Normalmente, os computadores que as pessoas usam têm interfaces USB, e o mouse, teclado, microfone, etc. podem ser todos conectados à interface USB para uso. Quando o computador é iniciado, esses dispositivos também são iniciados; quando o computador é desligado, esses dispositivos também são desligados. Depois que os dispositivos de interface USB, como mouse, teclado, microfone, etc., forem todos iniciados, o computador pode ser ligado com sucesso; quando esses dispositivos forem desligados, o computador será desligado com sucesso.
Leia o programa de interface USB escrito , o programa simula o processo de inicialização e desligamento do computador e grava o resultado da execução.
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 {
@Override
public void turnOn() {
System.out.println("键盘启动了......");
}
@Override
public void turnOff() {
System.out.println("键盘关闭了......");
}
}
package 作业练习.test2.USB接口;
public class Mic implements USB {
@Override
public void turnOn() {
System.out.println("麦克风启动了......");
}
@Override
public void turnOff() {
System.out.println("麦克风关闭了......");
}
}
package 作业练习.test2.USB接口;
public class Mouse implements USB {
@Override
public void turnOn() {
System.out.println("鼠标启动了......");
}
@Override
public 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. Esta palavra-chave tem três aplicações principais:
(1) Isso chama o atributo nesta classe, que é a variável de membro da classe;
(2) Isso chama outros métodos nesta classe;
(3) Isso chama outros métodos de construção nesta classe, que devem ser colocados na primeira linha do método de construção ao chamar.
7. Descreva resumidamente a função da palavra-chave estática
Static é um modificador usado para modificar os métodos de membro e variáveis de membro de uma classe.Além disso, você pode escrever blocos de código estáticos para otimizar o desempenho do programa.
Os métodos estáticos modificados geralmente são chamados de métodos estáticos. Como os métodos estáticos podem ser acessados sem depender de nenhum objeto, não há isso para os métodos estáticos porque não estão anexados a nenhum objeto. Como não há objeto, vamos falar sobre isso. Não nisso. E, por causa desse recurso, as variáveis de membro não estático e os métodos de membro não estático da classe não podem ser acessados em métodos estáticos, porque os métodos / variáveis de membro não estático devem depender de objetos específicos para poderem ser chamados. O bloco estático pode otimizar o desempenho do programa devido às suas características: ele só será executado uma vez quando a classe for carregada pela primeira vez.
8. Descreva resumidamente a função da super palavra-chave
super é usado para chamar o método da classe pai com o mesmo nome na classe derivada ou para fazer referência à variável com o mesmo nome. Super é usado em classes derivadas para chamar explicitamente os métodos da classe pai.
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. Descreva resumidamente o papel das palavras-chave finais
A palavra-chave final pode ser usada em três lugares. Usado para decorar classes, atributos de classe e métodos de classe.
A classe modificada pela palavra-chave final não pode ser herdada e os atributos e métodos da classe modificados pela palavra-chave final não podem ser substituídos (substituídos);
Para o atributo de classe modificado pela palavra-chave final, a subclasse não pode reatribuí-lo. Se for reatribuído, um erro será relatado
Uma palavra por texto
Se uma pessoa tem sorte ou não, depende se ela pode adormecer e se pode acordar.
A cor da sorte de hoje é rosa! Você também pode ter sua própria felicidade ...