***2022-07-19 第7组 Java面向对象(2)

今日重点:

 

目录

一、类与对象--this关键字

二、面向对象特点之一--封装

1、思想层面

2、代码层面

(1)setter方法

(2)getter方法


一、类与对象--this关键字

*  this关键字
 *  this代表的是当前类的对象,this代表的是当前方法的调用者
 *  this既然是代表方法的调用者,它实际上和对象的作用是一样的
 *      既可以调属性,也可以调方法。
 *
 *  一个类中可以有什么?
 *  属性,方法,构造器
 *
 *  this不能用在static方法中。
 *
 *  开发中,this通常用在什么位置!
 *  通常用在赋值,构造器赋值。

package com.jsoft.morning;


public class Ch02 {

    String str;
    int i;

    public Ch02(){

    }

    public Ch02(String str) {
        this.str = str;
    }

    public Ch02(String str,int i){
//        this.str = str;
        // 调用构造器
        // 不需要写任何的名字
        /*
            this调用构造器的要求
            1、必须在构造器中使用this调用构造器
            2、必须是第一句话(第一行代码)
         */
        this(str);
        this.i = i;
    }

    public void show(String str) {
        /*
            当使用对象调用属性时,调用的是成员变量
         */
//        Ch02 c = new Ch02();
//        this(str);
        this.str = str;
        this.info();
//        info();
    }

    public void info(){
        System.out.println(str + "," + i);
    }

    public static void main(String[] args) {
//        Ch02 c = new Ch02();
//        c.show("哈哈");
//        System.out.println(c.str);
//        Ch02 c2 = new Ch02("呵呵");
//        c2.info();
        Ch02 c3 = new Ch02("嘿嘿",20);
        c3.info();

        Person person = new Person("张三",25);
    }
}

二、面向对象特点之一--封装

1、思想层面

可以把相似功能的代码封装成一个方法
如果说一堆的方法都要重复使用,我们还可以把一堆的方法封装成一个类

2、代码层面

  1. 属性私有化,所有的属性都要使用private
  2. 提供一个公有的set,get 方法
    getter方法能够按照客户的期望返回格式化的数据
    setter方法可以根据和检验setter方法传入的参数是否合法,隐藏对象的内部结构

正确定义一个类

  1. 所有的属性私有化
  2. 每个属性都有对应的setter,getter方法(规矩,要遵守)

(1)setter方法

(2)getter方法

3、构造器

 * 什么时候用构造器赋值?
 * 看创建对象是为了干什么?
 * 如果说创建对象仅仅是为了调用这个类的方法,建议使用无参构造器
 * 如果说创建对象的时候需要使用到对象的某个属性,可以使用构造器赋值

public class Ch01 {

    public static void main(String[] args) {
        // person是Person类的对象,是Person类的实例
        Person person = new Person();
        // 对象有什么功能?
        // 对象可以调属性,可以调方法
        // 对象调用的属性和方法
        person.name = "小明";
        person.age = 20;
//        person.eat();

        Car car = new Car();
        car.brand = "奔驰";
        car.color = "黑色";
//        car.run();

//        person.travel(car);

        // p2出生,就会有name,age,wife
        Wife wife = new Wife();
        wife.name = "李四";
        wife.age = 25;
        // p2一创建出来,所有的属性都会跟着初始化
        Person p2 = new Person("张三",25,wife);

        // p3一创建出来,就只有name和age,没有wife
        Person p3 = new Person("王五",26);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值