我是靠谱客的博主 清爽哑铃,最近开发中收集的这篇文章主要介绍super的使用//父类,提取共性代码Pet类/* * 宠物企鹅类Penguin类 * *//* * 宠物狗狗类Pet类 * *///宠物测试类TestPet类,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

49.super的使用

子类访问父类成员

  • 访问父类方法:例:super.print();

super可以调用父类的非private方法

  • 访问父类属性:例:super.name;

super不可以调用父类的private属性

super可以调用父类的非private属性

  • 访问父类构造方法:例1:super();   例2:super(name);

通过super调用父类的构造方法

super();注意参数顺序必须和父类一致

50.super总结

super关键字来访问父类的成员

  • 使用super关键字,super代表父类对象
  • super只能出现在子类的方法和构造方法中
  • super调用构造方法时,只能是第一句
  • super不能访问父类的private成员

51.super的使用场景

  • 子类方法重写父类方法
  • 在子类中定义了和父类同名的成员变量

子类会覆盖父类的同名成员

可使用super调用父类被子类覆盖的同名成员(super可以是被屏蔽的成员可见)

//父类,提取共性代码Pet类

public class Pet {
    //1.隐藏属性(添加private)
    //昵称,默认值是“无名氏”
    private String name="无名氏";

    //1.health属性不被用户访问到 2.程序编写过程中要能控制health的赋值--方法中
    /*if(this.health<0||this.health>100){
        System.out.println("请输入0-100的值!");
        this.health=60;
    }else{
        this.health=health;
    }*/
    //健康值,默认值是100,健康值在0-100之间,小于60为不健康
    private int health=100;
    //亲密度
    private int love=0;
    int age=5;


    public Pet(){
        System.out.println("父类无参构造方法");
    }
    public Pet(String name){
        this.name=name;
    }
    public Pet(String name,int health,int love){
        //this(name);  //this可调用本类的构造方法,且必须在第一行
        this.name=name;
        this.health=health;
        this.love=love;
        System.out.println("父类的带参构造方法");
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    //2.添加属性的setter/getter方法(方法公开),并加入属性控制语句
    //setter:1.属性赋值。2.属性的操作(正确判断等)
    public void setHealth(int health){
        if(health<0||health>100){
            System.out.println("请输入0-100的值!");
            this.health=60;
            return;
        }
        this.health=health;
    }
    //getter:属性取值
    public int getHealth(){
        return this.health;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getLove() {
        return this.love;
    }

    public void setLove(int love) {
        if(love<0||love>100){
            System.out.println("请输入0-100的值!");
            this.love=60;
            return;
        }
        this.love=love;
    }

     /**
      * 输出宠物的信息
     * */
    public void print(){
        System.out.println("宠物的自白:n我的名字叫"+this.name+",健康值为"+this.health+
                ",和主人的亲密度为"+this.love+"。");
//        if(this.health<0||this.health>100){
//            System.out.println("请输入0-100的值!");
//            this.health=60;
//        }else{
//            this.health=health;
//        }
    }
}

/*
* 宠物企鹅类Penguin类
* */

public class Penguin extends Pet {

    //性别
    private String sex="Q仔";

    public String getSex() {
        return this.sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public void print(){
        //调用父类的print()
        super.print();
        System.out.println(",我的性别是:"+this.sex);
    }

}

/*
* 宠物狗狗类Pet类
* */

import java.sql.SQLOutput;

/*
* 宠物狗狗类
* */
public class Dog extends Pet{

    //品种
    private String strain="聪明的拉布拉多犬";
    private int age=3;


    public Dog(){
        System.out.println("子类狗狗的无参构造方法");
    }
    public Dog(String name,int health,int love,String strain){
        //通过super调用父类的构造方法,必须是第一行
        //super();注意参数顺序必须和父类一致
        super(name,health,love);
        this.strain=strain;
        System.out.println("子类狗狗的带参构造方法");
    }


    public String getStrain() {
        return this.strain;
    }

    public void setStrain(String strain) {
        this.strain = strain;
    }

    public void print(){
        //调用父类的非private方法print()
        super.print();
        System.out.println(",我是一只:"+this.strain);
    }

    public void m1(){
        /*//super不可以调用父类的private属性
        System.out.println(super.name);*/
        //super可以调用父类的非private属性
        System.out.println(super.age);
    }

    public void m2(){
        //子类会覆盖父类的同名成员
        System.out.println(this.age);
        //可使用super调用父类被子类覆盖的同名成员
        System.out.println(super.age);
    }
}

//宠物测试类TestPet类

import java.util.Scanner;

//宠物测试类
public class TestPet {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("欢迎来到宠物店!");
        System.out.println("请输入您要领养宠物的名字:");
        String name = input.next();
        System.out.println("请输入您要领养的宠物类型:1.狗狗 2.企鹅");
        int typeNo = input.nextInt();
        switch (typeNo) {
            case 1:
               /* //接受用户键盘输入值
                System.out.println("请输入宠物的健康值:");
                int ghealth = input.nextInt();
                System.out.println("请输入宠物与主人的亲密度:");
                int glove = input.nextInt();
                System.out.println("请输入宠物的品种:");
                String strain = input.next();

                //创建狗狗对象,并为狗狗属性赋值
                Dog dog = new Dog();
                dog.setName(name);
                *//*dog.health=-1000;*//*
                dog.setHealth(ghealth);
                System.out.println(dog.getHealth());
            *//*伪代码
            do{
                dog.health=-1000;
                System.out.println("请输入0-100之间的数值!");
            }while(dog.health>0||dog.health<100);*//*
            *//*dog.love=3;
            dog.name="多多";
            dog.strain="吉娃娃";*//*
                dog.setLove(glove);
                dog.setStrain(strain);
                dog.print();
                dog.m1();*/
                Dog dog=new Dog("狗蛋",244,23,"二哈");
                dog.print();
                dog.m2();
                break;
            case 2:
                //接受用户键盘录入值
                System.out.println("请选择宠物的性别:1.Q妹 2.Q仔");
                int sexId = input.nextInt();
                String sex = (sexId == 1) ? "Q妹" : "Q仔";
                System.out.println("请输入宠物的健康值:");
                int qhealth = input.nextInt();
                System.out.println("请输入宠物和主人的亲密度:");
                int qlove = input.nextInt();

                //创建企鹅对象,并为企鹅属性赋值
                Penguin p = new Penguin();
            /*p.health=-1000;
            p.love=3;
            p.name="Q仔";
            p.sex="男";*/
                p.setName(name);
                p.setHealth(qhealth);
                p.setLove(qlove);
                p.setSex(sex);
                p.print();
                break;
            default:
                System.out.println("暂时没有这个类型的宠物,请在1或者2之间选择数值输入!");
                break;
        }
    }
}

最后

以上就是清爽哑铃为你收集整理的super的使用//父类,提取共性代码Pet类/* * 宠物企鹅类Penguin类 * *//* * 宠物狗狗类Pet类 * *///宠物测试类TestPet类的全部内容,希望文章能够帮你解决super的使用//父类,提取共性代码Pet类/* * 宠物企鹅类Penguin类 * *//* * 宠物狗狗类Pet类 * *///宠物测试类TestPet类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部