4.11总结

一、构造器

定义在类中的,可以用于初始化一个类的对象,并返回对象地址。

Car r = new Car();——即构造器

构造器的格式:

修饰符 类名(形参列表){
...
}
如:
类 变量名称 = new 构造器();

二、this关键字

1.作用:可以用于指定访问当前对象的成员变量、成员方法。

三、封装

封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。

1.如何封装,代码如下

package thisdemo;

//学习如何进行更好的封装

public class Test2 {
    public static void main(String[] args) {
        Student s = new Student();//调用方法

        s.setAge(-23);//赋值
        System.out.println(s.getAge());
    }
}


package thisdemo;

public class Student {
//1.成员变量,使用private修饰,只能在本类中访问。
private int age;

//提供成套的getter和setter方法,暴露其取值和赋值。

public void setAge(int age){
    if (age >= 0 && age <= 200){
        this.age = age;
    }else {
        System.out.println("您的年龄数据有问题!");
    }
}

public int getAge(){
    return age;
}

}

四、JavaBean

也可以成为实体类,其对象可以用于在程序中封装数据。

书写要求:成员变量使用private修饰,提供成员变量对应的setXxx()/getXxx()方法,必须提供一个无参构造器。

代码如下:

package JavaBean;

//记住JavaBean的书写

public class Test {
    public static void main(String[] args) {
        //1.无参数构造器创建对象封装一个用户信息
        User u1 = new User();
        u1.setName("破落天堂封织云");
        u1.setHeight(172);
        u1.setSalary(30000);
        System.out.println(u1.getName());
        System.out.println(u1.getHeight());
        System.out.println(u1.getSalary());

        //2.有参数构造器创建对象封装一个用户信息
        User u2 = new User( "破落天堂封云" , 178 ,30000);
        System.out.println(u2.getName());
        System.out.println(u2.getHeight());
        System.out.println(u2.getSalary());
    }
}

package JavaBean;

public class User {
    //1.成员变量建议使用private私有
    private String name;
    private double height;
    private double salary;

    //2.必须为成员变量提供成套的setter和getter方法


    public String getName() {
        return name;
    }

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

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    //3.要求提供"无参数"构造器。


    public User(String name, double height, double salary) {
        this.name = name;
        this.height = height;
        this.salary = salary;
    }//有参数的构造器

    public User() {
    }


}

可以自己生成JavaBean的相关代码,右键生成SG。

面向对象综合案例——模仿电影信息展示。

代码如下:

package movieDemo;

/**
 * 目标:使用面向对象编程,模仿电影信息展示
 *      一部电影是一个Java对象,需要先设计电影类,在创建电影对象
 *      三部电影可以用数组储存起来
 *      依次遍历数组中的每个电影对象,取出其信息进行展示
 *
 *      长津湖 吴京 9.7
 *      我和我的父辈 吴京 9.1
 *      扑水少年  王川  9.1
 */

public class Test {
    public static void main(String[] args) {
        //1.首先设计电影类
        //2.创建三个电影对象,封装电影信息
        //3.定义一个电影类型的数组存储三部电影对象

        Movie[] movies = new Movie[3];
        movies[0] = new Movie("《我和我的父辈》" , "吴京" , 9.7);
        movies[1] = new Movie("《长津湖》" , "吴京" , 9.5);
        movies[2] = new Movie("《扑水少年》" , "王川" , 9.1);

        //4.遍历数组中的每个电影对象,获取其信息并展示

        for (int i = 0; i < movies.length; i++) {
            Movie m = movies[i];//注意,这里为Movie类
            System.out.println("电影名称" + m.getName());
            System.out.println("主演:" + m.getActor());
            System.out.println("电影评分:" + m.getScore());
            System.out.println("-------------------------");
        }
    }
}

JavaBean代码如下

package movieDemo;

public class Movie {
    //1.成员变量
    private String name;
    private String actor;
    private double score;

    //2.getter、setter


    public String getName() {
        return name;
    }

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

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    //3.生成构造器无参数


    public Movie(String name, String actor, double score) {
        this.name = name;
        this.actor = actor;
        this.score = score;
    }

    public Movie() {
    }
}

posted @   奉禾  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示
主题色彩