构造器、this关键字、封装及面向对象的案例

一、构造器

学习构造器的目的:

①真正知道对象具体是通过什么代码调用的。
②能够掌握对象赋值的其他简便写法。
③为以后学习面向对象编程的其他内容做支撑。

构造器的作用

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

Car c=new Car( );

构造器的格式

public class Car{
    public Car(){
    //无参数构造器
    }
    public Car(String n,double p){
    //有参数构造器
    }
}

构造器代码示例

public class Car {
    String  name;
    double price;

    //无参构造器
    public Car(){
        System.out.println("===无参数构造器===");
    }
    public Car(String name,double price){
        System.out.println("===有参数===");
        this.name=name;
        this.price=price;
    }
}
public class Test {
    public static void main(String[] args) {
        //通过构造器得到对象
        Car c1=new Car();
        System.out.println(c1.name);
        System.out.println(c1.price);

        Car c2=new Car("张三",999);
        System.out.println(c2.name);
        System.out.println(c2.price);
    }
}

二、this关键字

this关键字是什么?

①可以出现在构造器、方法中。
在这里插入图片描述
在这里插入图片描述

代表当前对象的地址。
在这里插入图片描述
③this的作用:
可以用于指定访问当前对象的成员变量,成员方法。
在这里插入图片描述

三、封装

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

如何进行封装

一般使用对成员变量使用private关键字修饰(private修饰的成员只能在当前类中访问
为每个成员变量提供配套public修饰的getter、setter方法暴露其取值和赋值。
①编写学生类,使用getter和setter方法

public class Student {
    //1.成员变量,使用private修饰,只能在本类中访问
    private int age;
    //2.提供整套的getter和setter方法暴露其取值和赋值
    public void setAge(int age){
        if(age>=0&&age<=200){
            this.age=age;
        }else{
            System.out.println("您输入的年龄有问题");
        }
    }
    public int getAge(){
        return age;
    }
}

②编写测试类

public class Test2 {
    public static void main(String[] args) {
        Student s=new Student();
        s.setAge(23);
        System.out.println(s.getAge());
    }
}

四、JavaBean

标准JavaBean需满足如下要求:

①成员变量使用private修饰。
②提供成员变量对应的setXXX( )/getXXX方法
③必须提供一个无参构造器;有参构造器可写可不写
可以使用快捷键生成对应的setter和getter方法,具体代码如下:
编写用户类,定义相关的用户变量:姓名,身高和薪水

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

    //要求提供无参数构造器,有参数构造器是可选的
    public User() {
    }

    public User(String name, double height, double salary) {
        this.name = name;
        this.height = height;
        this.salary = salary;
    }

    //必须为成员变提供成套的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;
    }
}

创建一个测试类,用来结果的输出:

public class Test {
    public static void main(String[] args) {
        //无参数构造器创建对象封装一个用户信息
        User u1=new User();
        u1.setName("张三");
        u1.setHeight(165.0);
        u1.setSalary(2500);
        System.out.println(u1.getHeight());
        System.out.println(u1.getName());
        System.out.println(u1.getSalary());
        
        //有参数构造器创建对象封装一个用户信息
        User u2=new User("李四",168,3500);
        System.out.println(u2.getName());
        System.out.println(u2.getHeight());
        System.out.println(u2.getSalary());
    }
}

五、面向对象案例–模仿电影信息展示

需求

使用面向对象编程,模仿电影信息的展示。

分析

①一部电影是一个Java对象,需要先设计电影类,再创建电影对象。
②三部电影对象可以采用数组存储起来。
③依次遍历数组中的每个电影对象,取出其信息进行展示。

创建一个Movie类,创建电影对象,并使用getter和setter方法:

public class Movie {
    //成员变量
    private String name;
    private double score;
    private String actor;
    //无参
    public Movie() {
    }
    //有参
    public Movie(String name, double score, String actor) {
        this.name = name;
        this.score = score;
        this.actor = actor;
    }

    //getter,setter方法
    public String getName() {
        return name;
    }

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

    public double getScore() {
        return score;
    }

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

    public String getActor() {
        return actor;
    }

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

创建一个测试类Test,用来结果的展示:

public class Test {
    public static void main(String[] args) {
        //1.设计电影类
        //2.创建3个电影对象,封装电影信息
        //3.定义一个电影类型的数组,存储三部电影对象
        Movie[] movies=new Movie[3];
        movies[0]=new Movie("《我不是药神》",9.5,"黄渤");
        movies[1]=new Movie("《长津湖》",9.6,"吴京");
        movies[2]=new Movie("《我和我的父亲》",9.4,"吴京");
        //4.遍历数组中的每个电影对象,然后获取他的信息展示出来
        for (int i = 0; i < movies.length; i++) {
            Movie m=movies[i];
            System.out.println("电影名"+m.getName());
            System.out.println("评分"+m.getScore());
            System.out.println("演员"+m.getActor());
            System.out.println("=================");
        }
    }
}

最终代码运行结果如下:
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的小琰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值