JAVA作业第一次总结

 

错误点一(构造函数)

基础语法错误吧

public class Penguin extends animal{
    private String sex; 
    
    public Output(String name,int health,int love){
        super(name);
        super(health);
        System.out.println("我的名字是"+name+"我的健康值为"+health
                +"我和主人的亲密度为"+love+"我是"+sex);
    }

构造方法是类里的一个特殊的方法,不能有返回值(包括void)。所以当编译器反复报错“方法访问无效,需要返回类型”的时候,懵.....后来才发现方法名没有和类同名.....(大小写也要严格遵守)

 public penguin(String name,int health,int love)

JAVA构造方法

  • 构造方法

一般首字母大写

  • 方法调用

实例化类的时候就实现了

Penguin penguin_1 = new Penguin("鹅蛋",100,0);
  • 方法重载

一个类中可以有多个构造方法,此为方法重载。

a.方法名相同

b.参数列表不同

public Penguin (){
//不含参数构造方法
}
public void Penguin(){
//有返回类型,不是构造方法
}
public Penguin(String name){
}
public Penguin(String name,int health){
//方法重载
}
  • 关于构造函数的默认声明

首先如果在类里不声明一个构造函数,java会给该类默认一个构造函数,并且该构造函数的权限是随着类的改变而改变的(类为public,构造函数也为public;类改为private,构造函数也改为private);而当该类一旦声明了构造函数以后,java 是不会再给该类分配默认的构造函数。就是说,一旦你声明了构造函数,并且该构造函数有形参,那么你就不能pen ipen=new pen();像这样声明一个对象了。

  • this.length(创建该对象成员变量)
    this函数的意思就是对当前对象的引用。this.length的意思就是该对象的length
  • this(length)(调用构造方法)
    构造方法在类里不能像其他方法一样调用,只能通过this(参数列表)调

作者:光哥很霸气
链接:https://www.jianshu.com/p/c2300404c331
來源:简书

 

错误点二(super 用法)

Java中this和super的用法总结(作者写的真清晰)

 

本次作业

//父类
public class animal {
    private String name ="无名氏";
    private int health =100;
    private int love = 0; 
   
    public animal(int health){
        if(health>=100||health<0){
            this.health = 40;
            System.out.println("请输入正确的健康值");
        }
        else
            this.health = health;
    }
    
    public animal(String name){
        this.name = name;
    }
  
    public void print() {
		System.out.println("宠物的自白:\n我的名字叫" + 
				this.name + ",我的健康值是" + this.health 
				+ ",我和主人的亲密程度是" + this.love + "。");
	}
}
//三个子类,猫狗鹅
public class Cat extends animal{
     String strain;

    public Cat(String name,String strain) {
        super(name);
        this.strain = strain;
    }
   
    public void settleStrain(String strain){
        this.strain = strain;  
    }
    
    public void print(){
        super.print();
        System.out.println("我是一只"+strain+"猫猫。");
    }
    
}

public class Dog extends animal{
    String strain;

    public Dog(String name,String strain) {
        super(name);
        this.strain = strain;
    }
    
    public void settleStrain(String strain){
        this.strain = strain;  
    }
    
    public void print(){
        super.print();
        System.out.println("我是一只"+strain+"狗狗");
    }
}

public class Penguin extends animal{
    private String sex; 
    //String name;
    
    public Penguin(String name,String sex){
        super(name);
        this.sex = sex; 
    }

    public void settleSex(String sex){
        this.sex = sex;  
    }
    public void print(){
    super.print(); //调用父类的print方法
    System.out.println("我是一只 " + this.sex + "鹅。");
    }
}

    public static void main(String[] args) {
        // TODO code application logic here
        String strainDog;
        String strainCat;
        String sex;
        
        System.out.println("欢迎来到宠物店!\n"
                + "请给宠物取个名:");
        Scanner input = new Scanner(System.in);
        String name = input.next();
        System.out.println("请选择领养宠物的种类(1.狗狗  2.企鹅  3.猫猫");
        int Choice = input.nextInt();
        switch(Choice){
            case 1:
                System.out.println("请说出狗的品种");
                strainDog = input.next();
                Dog dog = new Dog(name,strainDog);
                dog.print();
                break;
                
            case 2:
                System.out.println("请选择企鹅性别1.Q仔  2.Q妹");
                int sexChoice = input.nextInt();
                if(sexChoice==1){
                    sex ="Q仔";
                }
                else
                    sex = "Q妹";
                Penguin penguin = new Penguin(name,sex);
                penguin.print();
                break;
                
            case 3:
                System.out.println("请说出猫的品种");
                strainCat = input.next();
                Cat cat = new Cat(name,strainCat);
                cat.print();
                break;
        }

    }
    
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值