Java封装思想和方法

1.创建一个你所理解的学生类(Student), 至少含有3个属性,需体现出封装思想,必须含有study方法.

2.在上一题的基础上创建本科生类(Undergraduate), 继承学生类,重写study方法(study方法中输出“我爱Java”),并在main方法中调用。

public class Student {
    private String name; 
    private int age; 
    private String sex;

    // 构造方法
    public Student(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex= sex;
    }

    // 封装属性的访问方法
    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;
    }
 
    public void study() {
        System.out.println("学生正在学习...");
    }
}

public class Undergraduate extends Student {
    // 构造方法
    public Undergraduate(String name, int age, String sex) {
        super(name, age, sex);
    }

    // 重写study方法
    @Override
    public void study() {
        System.out.println("我爱Java");
    }
}


public class Main {
    public static void main(String[] args) {
        Student student = new Student("张三", 20, "男");
        student.study();  

        Undergraduate undergraduate = new Undergraduate("李四", 25, "男");
        undergraduate.study();  
    }
}


gpt


// 学生类(Student)
public class Student {
    private String name;    // 姓名,私有属性
    private int age;        // 年龄,私有属性
    private String gender;  // 性别,私有属性
    
    // 构造方法
    public Student(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
    
    // 获取姓名
    public String getName() {
        return name;
    }
    
    // 获取年龄
    public int getAge() {
        return age;
    }
    
    // 获取性别
    public String getGender() {
        return gender;
    }
    
    // 学习方法
    public void study() {
        System.out.println("我正在学习...");
    }
}

// 本科生类(Undergraduate)继承自学生类(Student)
public class Undergraduate extends Student {
    // 构造方法
    public Undergraduate(String name, int age, String gender) {
        super(name, age, gender);
    }
    
    // 重写学习方法
    @Override
    public void study() {
        System.out.println("我爱Java");
    }
    
    // main方法
    public static void main(String[] args) {
        Undergraduate undergraduate = new Undergraduate("张三", 20, "男");
        System.out.println("姓名:" + undergraduate.getName());   // 获取姓名
        System.out.println("年龄:" + undergraduate.getAge());     // 获取年龄
        System.out.println("性别:" + undergraduate.getGender());  // 获取性别
        undergraduate.study();    // 调用学习方法
    }
}

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7473398
  • 这篇博客也不错, 你可以看下java 设计一个学生类Student和它的一个字类Undergraduate
  • 除此之外, 这篇博客: Java讲课笔记10:类的封装中的 (2)创建学生类Student,重载喂养方法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里插入图片描述

    package net.hw.lesson10;
    
    /**
     * 功能:学生类
     *      演示重载
     * 作者:华卫
     * 日期:2020年4月28日
     */
    public class Student {
        private String name;
        private int character;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getCharacter() {
            return character;
        }
    
        public void setCharacter(int character) {
            if (character >= 1 && character <= 10) {
                this.character = character;
            } else {
                System.err.println("人品值必须介于[1, 10]之间!");
            }
        }
    
        public void speak() {
            if (character >= 1 && character <= 10) {
                System.out.println("嗨, 我叫" + name + ",人品值:" + character);
            }
        }
    
        /**
         * @param cat
         */
        public void feed(Cat cat) {
            System.out.println(name + "喂养了一只猫,名叫" + cat.getName() + ",现在" + cat.getAge() + "岁了。");
            cat.eat();
        }
    
        /**
         * @param dog
         */
        public void feed(Dog dog) {
            System.out.println(name + "喂养了一条狗,名叫" + dog.getName() + ",现在" + dog.getAge() + "岁了。");
            dog.eat();
        }
    
        /**
         * @param bird
         */
        public void feed(Bird bird) {
            System.out.println(name + "喂养了一只鸟,名叫" + bird.getName() + ",现在" + bird.getAge() + "岁了。");
            bird.eat();
        }
    }
    
  • 您还可以看一下 汤小洋老师的手把手搭建Java学生选课系统【附源码】(毕设)课程中的 学生选课系统简介小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    学生类的具体属性和封装思想

    学生类需要包含至少三个属性,一般情况下可以选择学号(id)、姓名(name)、年龄(age)、成绩(score)等等。建议选择id、name和score这三个属性进行封装,其中score可以拆分为操作系统成绩(operatingScore)、Java成绩(javaScore)和高数成绩(mathScore)三个属性进行封装。

    封装思想:将属性私有化,提供getter和setter方法进行访问。

    具体实现如下:

    public class Student {
        private int id;
        private String name;
        private float operatingScore;
        private float javaScore;
        private float mathScore;
    
        public Student(int id, String name, float operatingScore, float javaScore, float mathScore) {
            this.id = id;
            this.name = name;
            this.operatingScore = operatingScore;
            this.javaScore = javaScore;
            this.mathScore = mathScore;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public float getOperatingScore() {
            return operatingScore;
        }
    
        public void setOperatingScore(float operatingScore) {
            this.operatingScore = operatingScore;
        }
    
        public float getJavaScore() {
            return javaScore;
        }
    
        public void setJavaScore(float javaScore) {
            this.javaScore = javaScore;
        }
    
        public float getMathScore() {
            return mathScore;
        }
    
        public void setMathScore(float mathScore) {
            this.mathScore = mathScore;
        }
    
        public void study() {
            // 学习的具体方法实现
        }
    }
    

    Undergraduate类的实现和study方法的重写

    Undergraduate类需要继承Student类,并重写study方法,在study方法中输出“我爱Java”,具体实现如下:

    public class Undergraduate extends Student {
        public Undergraduate(int id, String name, float operatingScore, float javaScore, float mathScore) {
            super(id, name, operatingScore, javaScore, mathScore);
        }
    
        @Override
        public void study() {
            System.out.println("我爱Java");
        }
    }
    

    在main方法中调用Undergraduate类中的study方法

    在main方法中,我们可以创建Undergraduate类的对象,并调用它的study方法,代码如下:

    public static void main(String[] args) {
        Student student = new Undergraduate(1, "张三", 80, 90, 85);
        student.study();
    }