小王java学习打卡day06——封装,继承,重写,抽象

本文详细介绍了Java中的变量类型,包括成员变量和局部变量,以及它们的作用域和生命周期。强调了成员变量与局部变量的使用场景,并讨论了封装的概念,作为面向对象编程的重要特征。此外,还涵盖了访问修饰符的使用,如private、public和protected,以及构造器、方法重写和抽象类的定义和注意事项。
摘要由CSDN通过智能技术生成

深入变量

变量的定义语法:

数据类型 变量名 = 值;

根据位置不同,分为两大类:

  • 成员变量:全局的变量 、 字段(定义到类里面的变量)

    • 类成员变量(static修饰的变量, 类名.变量名)

    • 实例成员变量(直接定义到类里面的)

  • 局部变量;当前方法的变量

    • 方法内部的变量

    • 方法的形参

    • 代码块里面的变量

    ​
    public class VariableDemo {
        //类变量
        public static final String VARIABLE_NAME = "类变量";
    ​
        //实例变量
        String name;
    ​
        public static void main(String[] args){
            //局部变量
            int a = 23;
    ​
        }
        public void eat(String name){
            System.out.println("方法的形参"+name);
    ​
            for (int i = 0; i < 32; i++) {
                //也是局部变量
            }
            {
                //代码块里面的局部变量
                int b =44;
            }
        }
    }
    ​

    变量的生命周期:

    • 作用域范围内(最近的花括号) 销毁:作用域结束即销毁

    • 成员变量(整个类里面都可以使用), 销毁:随 GC不定时回收

    • 类的变量(整个代码里面都可以), 销毁:随类加载而加载进内存 --- 程序结束

什么时候用成员变量,什么时候用局部变量?

  • 考虑变量的生存时间(会影响内存的开销)

  • 能减少作用域的都需要减少,(节约内存的开销)

  • 定义工具类的时候用成员变量,(static用起来方便),封装后利于多个方法的调用

package深入学习

<img src="C:\Users\wxj\AppData\Roaming\Typora\typora-user-images\image-20220503200545864.png" alt="image-20220503200545864" style="zoom: 33%;" />

  • java.lang java语言的核心包,是不需要导包的

  • java.util 工具类相关的包(Arrays)

面向对象

封装

封装是面向对象的特征之一。

表现:

  1. 方法就是一个封装

  2. 类也是一个封装

总结:

  1. 提高代码的复用性

  2. 影藏了实现细节,提高安全性

举例:电脑(cpu,内存,硬盘。。)

学生(名字,性别,年龄....)

访问修饰符

private:私有的,仅供类访问权限

缺省:包访问权限(本包访问)

protected:子类访问权限(给子类访问的)

public:公用的,任何地方都可以

修饰符类内部同一个包子类任何地方
private×××
××
protected×
public

封装的实现

规范:

  1. 遵循javabean的规范

    • set get后面的单词一定使我们字段的首字母大写 setAge getAge

  2. set不需要返回, get根据字段(成员变量的返回类型) int

  3. 当set里面的传入参数与成员变量的参数名一样时,则需要使用this关键字

    this.name = name;

        private String name;
        private int age;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }

    需求:建一个person类,含有 name age address 字段

注意

  • 静态方法里面不能用this关键字,默认get不写this,底层编译的时候会自动加上

  • this关键字可以在构造器构造方法里面使用

继承

创建对象的时候,构造方法是如何执行的?

  • 先执行父类构造器

  • 子类构造器

  • set get 方法

  • 创建什么对象,打印的this就是谁

重写

重写本身与重载没什么关系

特点(一同,两小,一大):

  • 方法名必须相同

  • 参数列表必须相同 (类型,变量名)

  • 发生在子类和父类之间

  • 子类的返回类型是和父类一致或者比他小

  • 子类的抛出异常是和父类一致或者比他小

  • 子类的修饰符必须大于等于父类

重写与重载的区别:

  • 方法重写:override

    • 解决继承中父类不满足子类需求的要求,需要在子类中重写本方法

  • 方法重载:overload

    • 解决一个类中,相同功能的方法名不同的问题

抽象类方法

1.定义

public abstract class UsbAbstract {
    
    public abstract void usb();
    public void print(){
        System.out.println("这是抽象方法的print方法");
    }
}
​

  1. 注意事项:

    • 抽象类也有构造方法,但是抽象类不能实例化(只能通过子类创建)

    • 可以创建普通方法

    • 抽象方法没有方法体,必须等子类实现

    • 当子类继承是抽象类的时候,需要去实现抽象类(父类)的抽象方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值