数组()
//数组遍历
//普通数组
数组的最大下标就是数组长度减1
for(数组类型 变量名 :数组){
//变量就是取出每个元素的值
}
方法:
方法就是单个功能,解决
//声明方法
1.静态方法2.实例方法
访问修饰符静态修饰符,返回值类型 方法名(形参列表)
//可变参数
public String test(数据类型... 变量名){
//可变参数本质是一个数组
xxx.test("1","2","3");
}
1.静态方法:类名.方法明
2.实例方法:对象.方法名
3.在本类中,双方都是静态方法或者都是实例方法可以直接调用
方法重载,和方法重写的区别
方法重载:方法名相同,形参列表不同。作用减少方法名
方法重新:两个类有继承关系,才满足方法重写0,父类的方法不能满足子类的需求。就进行重写
//在有返回值的方法中,存在选择判断的时候
- 1.方法参数值传递
- 1.基本数据类型:传递的是值
- 2.引用数据类型。传递的是地址,修改地址对应的对象,对象本身也会发生变化,String除外
面向对象
类和对象:宏观的类型,对象是具体的个体。
自己设计业务类:
1.属性
1.静态的东西属性来表示
2.行为
1.动态的行为用方法来表示
访问权限修饰符
.public 权限最大
.private权限最小。本类使用。
构造方法:用来创建对象,给对象赋值。
- 构造方法的写法:类似方法,没有返回值,方法名与类名一致吗,不能static修饰
- 一个类默认有一个隐式的无参构造方法
- 在类中只要声明了有参构造,无参构造就失效
- 平时两个都写出来。
- 匿名对象:没有使用变量接收的对象叫做匿名对象,一次性的
- 对象生命周期:创建对象开始,失去引用结束。
封装:
1.目的安全,避免直接操作对象的属性
public class Stu{
private String name;
private int age;
public Stu(){
}
public Stu(String name, int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public void test(){
}
}
this :代表当前对象(谁调用就是谁)
继承:
- 继承:extends:子类可以继承父类的属性和方法,没有private修饰
- 继承后方法调用:先在子类找,子类找不到去父类找,父类找不到去object找
- 继承后可以重写方法
- super关键字:纯指父类。
抽象类:abstract修饰的类,在普通类的基础上多了抽象方法
接口:接口修饰的类,抽象方法,全局变量,成员变量,静态方法,默认方法
普通类:
java中:
- 类与类之间的关系:单继承
- 类与接口的关系:多实现
- 类与抽象之间的关系:单继承
- 抽象类与接口的关系:多实现
- 接口与接口之间的关系:多继承
接口概述:让不同的类拥有共同的行为。
多态:一种行为的多种表现形态。
向上造型:子类对象使用父类类型来接收
向下造型:父类对象子类来接收,会出现转换异常先用instanceof判断一下,看类型是否一致在转换。
多态的好处:扩展性非常强(可以一直加子类)
static修饰符:
- static修饰的成员变量是类共享的
- static修饰的类,加载的时候就已经存在了
匿名内部类:当一个抽象类、接口中抽象方法小于等于3的时候,可以使用匿名内部类来重写方法,匿名内部类整个代码块,相当于接口的实现类和抽象类的子类
new 接口/抽象类(){
@override
方法
}.方法;
//匿名内部类因为相当于子类或者实现类,是直接可以调用方法,如果要多次调用,就使用变量来接收,变量类型跟接口或者抽象类的类一致
fina修饰符:
- 修饰类:太监类
- 修饰方法:不能重写
- 修饰字段:一旦赋值不可以修改
枚举:特殊的类,enum修饰,隐式Enum(不能显示写出来),同一字段的对象是单列(至始至终只有一个对象)
使用场景:对象固定的情况