JAVA作业三

(一)学习总结

1.阅读下面程序,分析是否能编译通过?如果不能,说明原因。应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来?

class Grandparent {
    public Grandparent() {
        System.out.println("GrandParent Created.");
    }
    public Grandparent(String string) {
        System.out.println("GrandParent Created.String:" + string);
    }
}
class Parent extends Grandparent {
    public Parent() {
        System.out.println("Parent Created");
        super("Hello.Grandparent.");
    }
}
class Child extends Parent {
    public Child() {
        System.out.println("Child Created");
    }
}
public class Test{
    public static void main(String args[]) {
        Child c = new Child();
    }
}

运行结果:

应该将Parent类中super("Hello.Grandparent.");放在该构造方法的第一句,放在输出之前

修改后运行结果

只能子类调用父类的成员变量和成员方法,实现继承,不能反过来

2.阅读下面程序,分析程序中存在哪些错误,说明原因,应如何改正?正确程序的运行结果是什么?

···

class Animal{

void shout(){

System.out.println("动物叫!");

}

}

class Dog extends Animal{

public void shout(){

System.out.println("汪汪......!");

}

public void sleep() {

System.out.println("狗狗睡觉......");

}

}

public class Test{

public static void main(String args[]) {

Animal animal = new Dog();

animal.shout();

animal.sleep();

Dog dog = animal;

dog.sleep();

Animal animal2 = new Animal();

dog = (Dog)animal2;

dog.shout();

}

}

···

运行结果

第一行错误的原因是上转型,只能调用子类继承或者覆写的方法,其中没有sleep方法。 将其去掉

第二行错误的原因是下转型需要加上“(类型)“, 改正:Dog dog =(Dog) animal;

运行结果

3.运行下列程序

···

class Person {

private String name ;

private int age ;

public Person(String name,int age){

this.name = name ;

this.age = age ;

}

}

public class Test{

public static void main(String args[]){

Person per = new Person("张三",20) ;

System.out.println(per);

System.out.println(per.toString()) ;

}

}

···

(1)程序的运行结果如下,说明什么问题?

···

[email protected]

[email protected]

···

输出类对象会默认调用object类的tostring方法

(2)那么,程序的运行结果到底是什么呢?利用eclipse打开println(per)方法的源码,查看该方法中又调用了哪些方法,能否解释本例的运行结果?

出来了这个。。

(3)在Person类中增加如下方法

···

public String toString(){

return "姓名:" + this.name + ",年龄:" + this.age ;

}

···

重新运行程序,程序的执行结果是什么?说明什么问题?

可参考教材P229

运行结果

覆写了toString方法,调用的为覆写后的方法,打印类名也默认调用覆写后的方法

4.汽车租赁公司,出租汽车种类有客车、货车和皮卡三种,每辆汽车除了具有编号、名称、租金三个基本属性之外,客车有载客量,货车有载货量,皮卡则同时具有载客量和载货量。用面向对象编程思想分析上述问题,将其表示成合适的类、抽象类或接口,说明设计思路。现在要创建一个可租车列表,应当如何创建?

创建思路:

将编号、名称、租金定义为接口1,载客量为一个接口2,载货量为一个接口3

客车类连接接口1和2,货车连接接口1和3,皮卡连接接口1,2,3

5.阅读下面程序,分析代码是否能编译通过,如果不能,说明原因,并进行改正。如果能,列出运行结果

···

interface Animal{

void breathe();

void run();

void eat();

}

class Dog implements Animal{

public void breathe(){

System.out.println("I‘m breathing");

}

void eat(){

System.out.println("I‘m eating");

}

}

public class Test{

public static void main(String[] args){

Dog dog = new Dog();

dog.breathe();

dog.eat();

}

}

···

修改后

···

package 作业三;

interface Animal{

void breathe();

void run();

void eat();

}

class Dog implements Animal{

public void breathe(){

System.out.println("I‘m breathing");

}

public void run() {

System.out.println("I‘m running");

}

public void eat(){

System.out.println("I‘m eating");

}

}

public class test{

public static void main(String[] args){

Dog dog = new Dog();

dog.breathe();

dog.eat();

}

}

···

运行结果

6.其他需要总结的内容。

实验四

银行类

···package test;

public class Bank {

static String bankName;//银行名称

private String name;

private String password;

private double balance;//账户余额

private double turnover;//交易额

static void welcome()
{
    System.out.println("欢迎来到建设银行");
}

//开户
public Bank(String name,String password,double turnover){
    this.name = name;
    this.password= password;
    this.turnover = turnover;
    this.balance = turnover - 10;

    System.out.println(name+"开户成功"+"余额为:"+balance);
}

//存款方法
public void depoist(double turnover){
    balance = balance+turnover;
    System.out.println(name+"您的账户已存入"+balance+"元"+"当前余额为:"+balance+"元");
}

//取款方法
public void withdrawal(String password,double turnover)
{
    if(this.password!=password)
    {
        System.out.println("密码错误,重新输入");
        return;
    }
    if(balance-turnover>=0)
    {
        System.out.println("您已取出"+turnover+"元"+"当前余额为"+(balance-turnover));
    }
    else{
        System.out.println("余额不足");
    }
}

static void welcomenext()
{
    System.out.println("请恁鞋带好随身物品,欢迎下次再来");
}

}

public class Trade{

public static void main(String[] args){

Bank.bankName="建设银行";

Bank.welcome();

Bank bank = new Bank("冯润发","123456",200.0);

    bank.depoist(200.0);
    bank.withdrawal("123456",150.0);
    bank.withdrawal("654321",150.0);
    bank.withdrawal("123456",450.0);
    Bank.welcomenext();
}

}

···

员工类

···

package shiyan4;

public class Employee { //定义成员变量

private String empId;

private String name;

private int age;

private String sex;

//定义构造方法

public Employee(){}

//定义成员方法set,get方法

public String getEmpId(){

return empId;

}

public void setEmpId(String empId){

this.empId=empId;

}

public String getName(){

return name;

}

public void setName(String name){

this.name=name;

}

public int getAge(){

return age;

}

public void setAge(int age){

this.age=age;

}

public String getSex(){

return sex;

}

public void setSex(String sex){

this.sex=sex;

}

//定义成员方法show方法

public void show(){

System.out.println("员工编号是:"+getEmpId()+"\t姓名是:"+getName()+"\t年龄:"+getAge()+"\t性别:"+getSex());

}

}

package shiyan4;

public class Test {

public static void main(String[] args){

//创建对象

Employee e = new Employee();

e.setEmpId("河北农业大学");

e.setName("冯润发");

e.setAge(21);

e.setSex("男");

//调用显示信息方法

e.show();

}

}

···

原文地址:https://www.cnblogs.com/frf123456/p/8886477.html

时间: 2024-10-03 19:11:39

JAVA作业三的相关文章

Java进阶(三十四)Integer与int的种种比较你知道多少?

Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值为0,Ingeter的初值为null.但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱.所以我对它们进行了总结,希望对大家有帮助. 首先看代码: package

Java分为三个体系

Java是由SunMicrosystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由JamesGosling和同事们共同研发,并在1995年正式推出. Java分为三个体系: JavaSE(J2SE)(Java2PlatformStandardEdition,java平台标准版) JavaEE(J2EE)(Java2Platform,EnterpriseEdition,java平台企业版) JavaME(J2ME)(Java2PlatformMicroEdit

Java第三章 P72 输出”欢迎你,青“ 否则输出”对不起,你不是青“

import java.util.*; public class If { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); System.out.println("请输入用户:"); String name =in.next(); System.out.println("请输入密码:");

Java的三种代理模式简述

本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展. 比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing(). 1 public class Singer{ 2 public void sing(){ 3 System.out.println("唱一首歌"); 4 } 5 } 假如你希望,通过你的某种

Java进阶(三十五)java int与integer的区别

Java进阶(三十五)java int与integer的区别 前言 int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象. 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前者而integer 是后者(也就是一个类):因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为null. 2.初始化时: int i =1; Integer i= new In

学习 java netty (三) -- Channel

学习 java netty (三) – Channel 前言:netty封装的channel,看一下官网的定义 A nexus to a network socket or a component which is capable of I/O operations such as read, write, connect, and bind. 可以I/O操作(如读,写,连接和绑定)的连网套接字或组件 A channel provides a user: All I/O operations a

java多线程三之线程协作与通信实例

多线程的难点主要就是多线程通信协作这一块了,前面笔记二中提到了常见的同步方法,这里主要是进行实例学习了,今天总结了一下3个实例: 1.银行存款与提款多线程实现,使用Lock锁和条件Condition.     附加 : 用监视器进行线程间通信 2.生产者消费者实现,使用LinkedList自写缓冲区. 3.多线程之阻塞队列学习,用阻塞队列快速实现生产者消费者模型.    附加:用布尔变量关闭线程        在三种线程同步方法中,我们这里的实例用Lock锁来实现变量同步,因为它比较灵活直观.

201671010117 2016-2017-2 《Java程序设计》Java第三周学习心得

Java第三周学习心得 通过这一周的学习,了解到了Java的核心部分,理解了用户自定义类的定义 ,了解了对象的声明 ,了解了使用构造函数初始化对象 ,使用类属性与方法的使用,了解了package和import语句的用途,知道了假设你面对现实世界的一个对象,你不会把它的属性和处理方法分开,程序设计也是一样.面向对象程序设计(OOP):一种新的思维方法,更接近人类处理现实世界问题的自然表示方法.面向对象的语言有:C++,Smalltalk,Java等.面向对象程序设计的几个主要概念:抽象数据类型.类

Java杂谈三之判断素数以及穷举素数

首先确认下什么是素数,又称质数 百度的定义解答: 质数(prime number)又称素数,有无限个.一个大于1的自然数,如果除了1和它本身 外,不能被其他自然数整除(除0以外)的数称之为素数(质数) 明确了素数的定义后,下面用java来判断素数以及穷举2-999以内的素数,还是一样,主 要看的是对一个数进行判断或者对一组数进行判断的思想,至于怎样判断的,百度的定义已经给了很好的解答思路. JavaPrimeNubmer:类名 enumPrimeNumber():穷举2-999以内的所有素数 m