狂神说JavaSE篇Day08_面向对象

一、什么是面向对象

在这里插入图片描述
面向过程:线性思维
面向对象:以类的方式组织代码,以对象的方式组织数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 同一个包指同一层级,即同一目录层级下
  • 子类和父类在同一包下,子类可使用除private外的父类成员;
  • 子类和父类不在同一包下,子类只能使用protected和public的父类成员

二、回顾方法

2.1 方法的定义

  • 修饰符
  • 返回类型
  • break:(跳出switch,结束循环)和return(结束方法,返回结果)区别
  • 方法名:注意规范、见名知意
  • 参数列表:参数类型、参数名,可变长参数
  • 异常抛出:后面讲解

2.2 方法的调用

  • 静态方法(可通过类调用)和非静态方法(只能通过实例调用),static
  • 形参和实参
  • 值传递和引用传递
  • this关键字:代表类的实例,和python中的self类似,this可以提高程序可读性,不写不影响代码执行;this指向实例自身
  • this.什么时候不能省略:用来区分局部变量和实例变量的时候,不能省
    在这里插入图片描述
    在这里插入图片描述

三、类与对象的创建

在这里插入图片描述
在这里插入图片描述

3.1 使用new关键字创建对象

//Student.java
package com.oop.demo01;

//学生类
public class Student {
   
    //属性
    String name; //默认值null
    int age; //默认值0
    //方法
    public void study(){
   
        System.out.println(this.name+"在学习");
    }
}

//Application.java
package com.oop.demo01;
//一个项目应该只存在一个main方法
public class Application {
   
    public static void main(String[] args) {
   
        //类实例化后返回一个对象
        //student对象就是Student类的一个具体实例
//        Student student = new Student();
//        student.study();
        Student jack = new Student();
        Student rose = new Student();
        jack.name = "jack";
        jack.age = 11;
        System.out.println(jack.name);
        System.out.println(jack.age);
        System.out.println(rose.name);
        System.out.println(rose.age);
    }
}

3.2 构造器详解

在这里插入图片描述

  • 一个类即使什么都不写,也会存在一个方法;
  • 构造器:名称必须和类名相同;必须没有返回类型,也不能写void,类似python的__init__方法
    在这里插入图片描述
    在这里插入图片描述
    this()等同于调用构造器方法
    在这里插入图片描述
package com.oop.demo01;

public class Person {
   
    //显式定义构造器
    String name;
    //实例化初始值
    //使用new关键字,本质实在调用构造器
    //无参定义
    public Person(){
   
        this.name = "default";
    }
    //有参定义;定了有参构造,还想使用无参构造,则需显示定义无参构造
    public Person(String name){
   
        this.name = name;
    }
}

生成构造器快捷键
在这里插入图片描述

3.3 创建对象内存分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、封装

在这里插入图片描述

在这里插入图片描述
将属性私有化,通过get和set方法访问和修改,在set方法中添加安全性校验
private关键字:私有,只能在类内部访问,类外部无法访问
public:类内部和外部都能访问

package com.oop.demo02;

public class Student {
   
    //属性私有
    private String name; //名字
    private int age; //年龄
    private char gender; //名字

    //提供一些可以操作属性的方法
    //提供一些public的get、set方法
    public String getName(){
   
       return this.name;
    }
    public void setName(String name){
   
        this.name = name;
    }

    public void setAge(i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值