访问修饰符,描述定义在类中的属性和行为在什么情况下允许被访问
作用:限制属性和方法被使用和调用的范围
分类:
私有的(private)适用于本类
默认:适用于同包
受保护的(protected)适用于同包、非同包子类
公开的(public)适用全部范围
封装
组装:类的属性、行为
隐藏:体现在访问修饰符的不同
优点:
1、 类的成员变量可以成为只读或只写
2、 类可以对存储在其中的成员变量中的内容有一个整体的控制
3、 类的用户不需要知道类是如何存储数据的
静态成员变量
Static
修饰的全局变量叫做静态变量,也叫类变量,类变量的值为所有对象所共享
修饰的方法叫静态方法,即类方法,类方法只能使用静态变量,而不能使用非静态的全局变量
Static无法修饰构造函数
适用场景:
Static在修饰全局变量时,一般用于修饰常量,主要目的:节约内存,将变量定义在静态区域中,而不是每个对象本身。
Stitic在 修饰方法时,一般用于修饰工具类的工具方法,比如:arrays类、Stringutils类,包括超级数组类。
限制:
静态方法中不能调用非静态属性
静态初始化块
分为:实力初始化块和静态初始化块
放在属性(下)和构造(上)中间
内部类
在类的内部定义的类,称为内部类
成员内部类
等同于全员变量
成员内部类,内部可以使用外部类所定义的所有的成员(成员变量,成员方法)
成员内部类的访问:必须要通过外部类的实例调用,才可以访问内部类。例如:pc.new Monitor();
局部内部类
定义在方法的内部,作用范围也仅局限为这个方法
局部内部类,同样跟局部变量一样,不能添加访问修饰符
局部内部类,无法被方法外部访问
局部内部类,内部无法通过this.访问外部类的成员,但是可以通过“外部类.this.”来访问
一个java文件中,只允许出现一个public修饰的外部类,其他的而外部类都是default
继承
通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类。满足 is……a 的结构,被继承的类称为(父类,基类,超类)
子类、派生类:
父类的属性和方法可用于子类
子类可以扩展父类的属性和方法
继承的实现
关键字:extends。JAVA只有单继承,(一个子类只能有一个父类)。后续中,可以支持多实现
无法继承:
父类私有的
构造函数(构造器)。首先,语法不通过。逻辑上也不合适,子类、父类无法同时创造
优点:
代码的复用性。代码的扩展性
方法重写
继承父类的方法,可以添加或修改父类的行为
规则:
子类的方法的返回值的类型、方法名和形式参数列表,必须和父类中的是相同的
访问修饰符必须不小于父类中的访问修饰符
子类中重写的异常不能抛出比父类更多的异常
重写、重载区别
重写,存在继承动作,子类中的方法与父类中的方法相同(方法名称、参数列表、返回类型)
重载。一个类中的方法与该类中的另一个方法相同,参数列表不同
Supre关键字
代表父类的构造函数,这行代码必须放置在第一排
final关键字
修饰类时不能被继承。修饰的方法不能被子类重写。修饰变量(变量变常量)变量不能修改
数组
数组(仅存放同种类型数据,连续存放)是存储在一个连续的内存块中的元素集合
是一个可以放东西的容器。第一个元素下标为0
定义 length属性代表数组大小
使用new关键字初始化数组,并指定数组的大小
特点:
只能存放相同类型数据
内存中元素存放是连续的
数组的大小一经定义,将无法修改
每个元素都有对应的下标位置
按照下标使用该位置元素,访问时要防止越界
初始化
不需要使用new关键字
数据类型【】变量名={“a”,“b”,“c”,……}
这种方式,需要在底层先通过new关键字,创造一个数组,然后使用循环完成数组赋值
适用于小数组,内容不多情况下
结构化编程(面向过程),程序用流程图和自顶向下的方法设计
面向对象编程,围绕着要解决的问题中的对象来设计
面向对象解决方案
找对象,万物皆对象,对象因关注而存在。找到对象后,编写一个类来描述每个对象的属性(指对象身上拥有的数据)和行为
类是对象的抽象,对象是类的实例
书写JAVA类
Java中的类用关键字class声明
public(访问修饰符) class(关键字) Employee(类名){
}
Java源代码文件中只能包含一公用(public)类,文件名必须与公用类的类名相同,文件扩展名为“.java”。
向类中添加成员变量(数据)
访问修饰符。可以是public、private或protected;如果省略了访问修饰符,将使用默认访问修饰符
数据类型
成员变量名称。成员变量名称必须是一个有效的标识符,后面用分号结束
向类中添加方法(行为)组成
访问修饰符、返回值、方法名称,必须是一个有效的标识符、参数列表,在括号中出现、方法的定义
方法构成
public static void main() {
}
访问修饰符(public)(用于别的程序便于访问)
可选性质的修饰符(static)
返回类型(ovid) 方法名(遵循标识符规则)
参数的参数列表:()内的东西(个数自定义)
public static void main(int…a) {
}
定义在参数的参数列表的参数为形参,主要用来规定该方法被调用时,可以接收的数据的数据类型。方法调用时,实参必须满足形参的数据类型,至少保证可以相互转换
JAVA面向对象三大特征
封装、继承、多态
构造器
不能有任何返回类型(连void都没有)方法名必须和类名相同
public class Person{
public Person(){
System.out.println(“jjhkk”)
}
}
是一个特殊的方法,在类创建一个实例时被调用执行。用于产生类的实例
构造器可以不写,编译器会自动生成一个公共无参的构造器
This引用
每个对象都有一个隐含的this变量,它可以访问类的所有信息
this代表对当前类的对象的引用
不同包的类的调用 关键字:import
会修改程序执行顺序的3种情况
方法的调用、选择语句、逻辑语句
布尔逻辑
和—两个表达式均为true,组合为真
或—两个表达式一个为true,组合为真
异或—两个表达式中有且只有1个为true,整个表达式才为真
非—非真既假,非假既真
单分支if语句
条件表达式为布尔表达式,首先执行条件表达式,如果表达式结果为真,则执行语句块内容,否则,不执行语句块内容,执行if语句块之外的第一条语句
If(条件表达式){
语句块
}
双分支if语句(if….else….)
如果if条件表达式为真,则执行语句块1,否则,执行语句块2
If(条件表达式){
语句块1
}else{
语句块2
}
多分支if语句(if….else if…..)
首先执行条件表达1,如果表达式1结果为真,执行语句块1,否则执行条件表达式2,如果表达式2结果为真,执行语句块2;以此类推,如果所有的条件表达式,都不成立,那么执行语句块m
If(条件表达式1){语句块1}
else if(条件表达式2){语句块2}
else if(条件表达式3){语句块3}
……
else if(条件表达式m-1){语句块m-1}
else{语句块m}
多分支swich语句
定义:swich语句是一种处理计算和程序中多种选择情况的有效方式
switch(算术表达式){
case 常量表达式1:语句块1
break;
case 常量表达式2:语句块2
break;
……
default:语句块m
break;}
特性:
switch后面括弧的“算术表达式”的数据类型必须是字符型,字节型,短型整数,整数
每一个case的常量表达式值必须互不相同,否则就会出现相互矛盾的现象
case和default的放置,没有固定的顺序,但通常default放置在最后
break
用break语句可以跳出switch语句体,程序继续执行switch语句体下面的程序,在循环结构中,也可以使用break语句跳出本层循环体,从而提交结束层循环。
Countinue
continue的作用是结束本次循环(即跳过本次循环中余下尚未执行的语句),接着再一次进行循环条件的判断