java三大修饰符(封装,继承,多态),复习三大特征,数组,算法等

复习

数组

作用:存储一组数据类型相同的数据

特点:

1.长度不可变

2.存储的数据类型一致

名词:

长度:数组中存储的数据个数

下标(索引):数据在数组中的位置,从0开始到长度减一结束

元素:数组中存储的数据

使用步骤

1.声明
    语法:
        数据类型[] 数组名;
    如:
        int[] strs;
        String[] jj;
        Student[] aa;
2.创建
    静态创建
        声明与创建同时进行,不能分开
        语法:
            数据类型[] 数组名 = {值1,值2,...};
    动态创建
        带值:
            数组名 = new 数据类型[]{值1,值2,...};
        不带值:
            数组名 = new 数据类型[长度];
            有默认值,基本数据类型默认为0,引用数据类型默认为null
3.使用
    修改
        修改指定位置的数据
            数组名[下标] = 值;
    查询
        查询数组长度
            数组名.length
        查询指定位置的数据
            数组名[下标];

特殊情况

1.遍历
    使用普通for循环
    使用foreach(增强for循环)
        语法:
            for(数据类型 变量名:要遍历的数组名或集合){
​
            }
2.复制
    步骤:
        1.创建一个新数组
        2.遍历老数组
        3.将老数组中的数据逐个赋值给新数组对应的位置
3.扩容
    步骤:
        1.创建一个新数组
        2.遍历老数组
        3.将老数组中的数据逐个赋值给新数组对应的位置
        4.将新数组赋值给老数组

二维数组

概念:将一维数组作为元素存储的数组
长度:二维数组中存储的一维数组的个数
使用步骤:
    1.声明
        数据类型[][] 数组名;
    2.创建
        静态
            数组名 = {
                {...},
                {...},
                ...
            };
        动态
            带值
                数组名 = new 数据类型[][]{
                    {..},
                    {..},
                    ..
                };
            不带值
                数组名 = new 数据类型[x][y];
                x:存储的一维数组的个数,必填
                y:一维数组中存储元素的个数,可选
    3.使用

数组与方法的结合

1.将数组作为形参
    优点:解决了方法形参长度固定的问题
2.将数组作为返回值
    优点:可以是方法返回多个数据

可变参数

作用:可以给方法中传入不定长个的数据
语法:数据类型... 变量名
位置:形参列表的末尾
注意:一个方法只能使用一个
    语法中的...就是三个点

算法

作用:提高执行效率

评判标准

时间复杂度
空间复杂度

常用算法

两数交换位置
​
寻找最值
​
寻找最值下标
​
排序
    冒泡排序
    选择排序
    JDK提供的排序
​
查找
    顺序查找
    二分查找
​
杨辉三角

编程思想

面相过程

思想:只考虑事物的发展顺序

面相对象

思想:先考虑事物中存在哪些对象,在建立对象与对象之间的关系

类与对象

对象

概念:
    生活中:真实存在的事物
    代码中:在代码中真实存在的事物

概念:多个对象抽取其共同点形成的概念

类与对象的关系

先有类,后有对象
一个类可以创建多个对象
多个对象可以属于同一个类

类的定义

访问权限修饰符 class 类名{
​
}

类的组成

属性

作用:描述事物的静态特征
定义位置:类中,方法外
别名:全局变量,成员变量
语法:
    访问权限修饰符 数据类型 属性名;
注意:
    1.一个类中可以定义多个属性
    2.多个属性名不能相同

方法

作用:描述事物的动态特征(行为)
定义位置:类中,方法外
别名:函数,成员函数,成员方法
语法:
    访问权限修饰符 修饰符 返回值类型 方法名(形参列表){
        方法体
    }
注意:
    修饰符可有可无
    一个类中不能出现两个或两个以上方法名相同,形参列表也相同的方法

构造函数

作用:创建该类对象
定义位置:类中,方法外
别名:构造方法
语法:
    访问权限修饰符 构造函数名(形参列表){
        方法体
    }
注意:
    1.构造函数名必须与类名一致
    2.使用new关键字调用
    this,super也可调用,只能在构造函数中,new会开辟空间,this,super不会
    3.如果一个类中没有构造函数,系统会默认提供一个无参构造函数
    4.如果类中有构造函数,系统不会提供构造函数

对象的创建

语法:
    数据类型 对象名 = new 构造函数(实参列表);
执行步骤:
    1.使用new关键字在堆内存开辟一片空间
    2.给属性赋初值
    3.执行构造函数中的代码
    4.将堆地址赋值给栈中的引用

对象的使用

使用属性
    获取属性值
        对象名.属性名
    修改属性值
        对象名.属性名 = 值;
调用方法
    对象名.方法名(实参列表);

this

含义:谁调用this所在的方法,this就代表谁
场景1:当局部变量名与属性名重名时,用this区分
    this.变量名    属性
    变量名         局部变量
场景2:在本类中使用本类的其他属性或方法,此时可省略this不写
场景3:在构造函数中调用本类其他构造函数
    语法:
        this(实参列表);
    注意:
        1.必须在构造函数第一行
        2.不能形成递归

三大特征

封装

思想:包装一段代码

优点:

1.提高复用率
2.降低耦合度
3.方便使用,保护内部

java中的封装

变量:封装这个值
方法:封装这一段代码
类:封装这个属性与方法
对象:封装着多个属性
项目:封装着整个项目的所有文件
包:封装着多个java文件
...

本质:文件夹
作用:对java文件进行分类存储
创建:
    选择src
    点击鼠标右键
    选择new
    选择package
    填写包名
关键字:package

导包

何时导包:在当前java文件中,使用其他包下的java文件,需要导包
关键字:import
位置:类上包下

访问权限修饰符

作用:限制其修饰的内容的使用范围
​
public      公共的         当前项目中
protected   受保护的        当前包中或继承关系中
不写          默认的         当前包中
private     私有的         当前类中

经验

1.私有化所有属性
2.使用public修饰所有的方法
3.提供公共的get与set方法

编写类步骤

1.私有化所有属性
2.编写无参构造和全参构造
3.提供公共的get与set方法
4.编写特有方法

继承

作用:子类将拥有父类的所有属性与方法,构造函数除外

语法:

访问权限修饰符 class 子类名 extends 父类名{
    属性
    构造函数
    方法
}
注意:
    1.一个类只能有一个直接父类
    2.一个类如果没有明确的继承关系,默认继承object
    3.object是所有类的父类

super

概念:谁调用super所在的方法,super就表示谁的父类对象
使用场景:
    1.当子类重写父类方法,在子类中区分
        super.方法名(实参列表)     父类提供的
        方法名(实参列表)           子类重写后的方法
    2.当子类属性名与父类属性名相同时,用于区分
        super.属性名       父类提供的
        属性名             子类定义的
    3.子类构造函数中必须调用父类的构造函数,如果子类构造函数中没有写,默认调用父类无参构造
        super(实参列表);
        写在子类构造函数第一行

多态

概念:一个事物的多种形态

物的多种形态

子类对象转换为父类对象
    语法:
        父类名 对象名 = 子类对象;
        自动转换
父类对象转换为子类对象
    语法:
        子类名 对象名 = (子类名)父类对象;
    有风险
instanceof关键字
    作用:判断该对象是否属于该类
    语法:
        对象名 instanceof 类名

事的多种形态

重载
    要求:同一类中,方法名相同,形参列表不同
重写
    要求:
        继承关系中,子类方法与父类方法
        方法名相同
        形参列表相同
        返回值类型相同
        子类访问权限修饰符不能小于父类
    注意:
        子类重写父类方法后,子类对象转换为父类对象,使用该父类对象调用重写的方法依据执行的是子类重写后的方法


今日

三大修饰符

abstract

含义:抽象的,不可描述的

可以修饰:类和方法

修饰类

特点:不能直接创建对象
语法:
    访问权限修饰符 abstract class 类名{
​
    }
也被叫做抽象类
抽象类中不一定有抽象方法
子类继承抽象类,要么重写父类所有抽象方法,要么自己也是抽象类

修饰方法

特点:没有方法体
语法:
    访问权限修饰符 abstract 返回值类型 方法名(形参列表);
注意:
    抽象方法一定写在抽象类中
    抽象类中可以有多个抽象方法

final

含义:最终的,不可修改的

可以修饰:变量,方法,类

修饰变量

修饰局部变量
    语法:
        final 数据类型 变量名 = 值;
    注意:
        只能赋值一次
        final修饰的变量就是常亮
修饰成员变量
    语法:
        访问权限修饰符 final 数据类型 属性名 = 值;
    注意:
        1.final修饰的属性必须在声明时赋值
        2.final修饰的属性值不能修改

修饰方法

作用:final修饰的方法不能被重写
语法:
    访问权限修饰符 final 返回值类型 方法名(形参列表){
​
    }

修饰类

作用:不能被继承,这种类被称为最终类
语法:
    访问权限修饰符 final class 类名{
    
    }

static

含义:静态的,公共的(有点迷)

可以修饰:属性,方法,内部类,代码块

修饰属性

特点:
    该属性属于该类的所有对象,该类的一个对象对其进行修改,该类的所有对象的该属性都将被修改
    可以使用类名直接调用
语法:
    访问权限修饰符 static 数据类型 属性名;

修饰方法

特点:可以用类名调用方法,也可以用对象调用方法
语法:
    访问权限修饰符 static 返回值类型 方法名(形参列表){
        方法体
    }
注意:
    1.不能使用this或super关键字
    2.不能直接使用本类中其他非静态属性或非静态方法
    3.可以直接使用本类的静态属性或静态方法
    4.非静态方法中可以使用静态属性或方法

修饰代码块

特点:在类加载时被执行
    注意:一个类在程序运行时,只会被加载一次
语法:
    static{
        代码块
    }
注意:
    1.静态代码块中可以使用静态属性与静态方法,不能直接使用非静态属性或方法
    2.静态代码块与静态属性,谁在前,谁先执行,为了可以在静态代码块中使用静态属性,必须将静态属性声明在静态代码块之前
​
类加载时机:该类第一次使用
    1.第一次创建该类对象时
    2.第一次使用该类调用属性时
    3.第一次使用该类调用方法时
    4.第一次使用反射机制加载该类时

代码块

语法: {}

作用:封装一段代码

使用位置

类中方法外
    每次创建该类对象时被调用
    注意:
        在构造函数之前执行
        普通属性与代码块按顺序执行
类中方法中
    相当于没写

继承关系中的执行流程☆☆

先父静,再子静

父代码块,父构造函数

子代码块,子构造函数

作业

1,整理笔记
​
2,以下哪些论述是正确的 
A. 静态方法中不能调用非静态方法 
B. 非静态方法中不能调用静态方法 
C. 静态方法不能被覆盖 
D. 静态方法能够用类名直接调用 
E. 可以在不产生任何一个对象的情况下调用静态方法 
F. 静态方法里可以使用this
​
3,静态属性与非静态属性的区别?
​
4,final可以修饰什么?有什么作用
​
5,abstract可以修饰什么?有什么作用
​
6,创建动物类,类中有性别,年龄属性,动物会叫,会吃,会睡觉
    创建宠物类,类中有姓名属性
    创建猫类
    创建狗类
    创建狮子类
    分别创建猫类,狗类,狮子类对象,分别使用对象调用叫的方法,
        猫:喵喵喵
        狗:汪汪汪
        狮子:吼吼吼
    提示:狮子算宠物吗?
​
7,定义一个类,该类用于计算各种图形的面积,周长.
    如圆的周长,面积.矩形的周长,面积.梯形的周长,面积
    分别调用这些方法计算
    提示:圆的面积在计算时需要使用到π,而π的值是不可改变的
​
8,有如下代码 
class MyClass { 
static int count = 0; 
public MyClass(){ 
count++; 
System.out.println(count); 
} 
} 
public class TestMain{ 
public static void main(String args[]){ 
MyClass mc1 = new MyClass(); 
MyClass mc2 = new MyClass(); 
MyClass mc3 = new MyClass(); 
} 
} 
请写出该程序运行时输出的结果。 
​
9,ATM机(附加题)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值