2022-07-19 第二小组 张宁杰 Java面向对象(2)

目录

  1. 构造器
  2. this关键字
  3. 类之间has a 和 is a 的区别
  4. 空指针异常
  5. 面向对象的特征:封装

导图

知识点

知识点1

构造器

什么时候用构造器赋值?
看创建对象的目的是什么
如果说创建对象仅仅是为了调用这个类的方法,应当使用无参构造器
如果说创建对象的时候需要使用到对象的某个属性,可以使用构造器赋值
必须保证每个类都有一个无参构造器

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

        Car car = new Car();
        car.color = "黑色";
        car.brand = "宝马";
        car.run();
       // person.travel(car);
        //p2出生,就会有name,age,wife
        Wife wife = new Wife();
        wife.name = "李四";
        wife.age = 24;
        //p2一旦创建,所有的属性都会紧接着初始化
        Person p2 = new Person("张三",25,wife);
        Person p3 = new Person("王五",23);
    }

知识点2

this关键字

this代表的是当前类的对象,this代表的是当前方法的调用者
this既然是代表方法的调用者,它实际上和对象的作用是一样的
既可以调属性,也可以调方法
this不能用在static方法中
开发中我们通常用this给构造器赋值

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 = str;
        //this.info();  一般要省略
        info();
    }
    public void info(){
        System.out.println(str);
    }
    public static void main(String[] args) {
//        Ch02 c = new Ch02();
//        c.show("hhh");
//        System.out.println(c.str);
//        Ch02 c2 = new Ch02("hhe");
//        c2.info();
        Ch02 c3 = new Ch02("heheh",20);
        c3.info();
    }
}

this调用构造器的要求
1、必须在构造器中使用this调用构造器
2、必须是第一句话(第一行代码)

知识点3

类之间has a 和 is a 的区别

人要租一台车
租:用的时候我就拿过来,不用的时候还回去,这台车是不属于我的
方法:旅游,旅游需要一台车
这台车不是这个人的
人和车之间是只有一个使用的关系
这个Car作为一个形式参数,声明在方法处、

知识点4

空指针异常

NullPointerException
空指针异常出现的根本原因 ,是程序运行到某一个位置时:引用、请求了不存在的资源,包括不限于常量、变量、属性、原型、方法等。
3个异常:
1、数组下标越界
2、内存溢出(错误)
3、空指针

知识点5

面向对象的特征:封装

1.代码层面

(1)属性私有化,所有的属性都要使用private封装
(2)提供一个公有的set,get方法。
getter方法能够按照客户的期望返回格式化的数据
setter方法可以限制和检验setter方法传入的参数是否合法
隐藏对象的内部结构
正确定义一个类:
(1)所有的属性私有化
(2)每个属性都有对应的setter、getter方法

2.思想层面

学习心得

今天的学习内容是对昨天学习内容的深化,通过学习,我对Java的封装特性有了更深的理解,但是在练习的过程中,我发现自己对方法的封装还不够熟练。

posted @ 2022-07-19 20:13  贵妃就是贵妃  阅读(32)  评论(0编辑  收藏  举报