java se 封装和继承
一、封装
封装 :
a.private -> 被private 修饰的成员只能在本类中使用,在别的类中无法使用。
b.注意:
将一个代码放到一个方法中也是封装的体现
一个成员别private修饰,也是封装的体现,private更具备代表性
c.private的使用
修饰成员变量:private 数据类型 变量名
修饰方法:将public改成private,其他都一样。
* set方法:为属性赋值
* get方法:获取属性值
javabean快速生成快捷键:
alt + insert 选择constructor
标准的JavaBean:
* 1.类必须是公共的具体的
* 2.必须有私有属性
* 3.必须有构造方法(无参,有参)
* 4.必须有get/set方法
static静态关键字
static 一个静态关键字
使用:
1.修饰一个成员变量
static 数据类型 变量名
2.修饰一个方法
修饰符 static 返回值类型 方法名(形参){方法体;return 结果}
3.调用静态成员:
类名直接调用(不用new对象)因为静态成员属于类成员不属于对象成员
4.静态成员特点
a.静态成员属于类成员不属于对象成员(非静态成员属于对象成员)
b.静态成员会随着类的加载而加载
c.静态成员优先于非静态成员存在在内存中
d.凡是根据静态成员所在的类创建的对象,都可以共享这个静态成员
可变参数
//可变参数
//格式 数据类型...变量名
//可变参数的本质是一个数组
//参数不能连续写多个可变参数
//可变参数和参数一起使用要把可变参数放在最后
public class Demo01Var {
public static void main(String[] args) {
sum(1,2,78,89,14);
}
public static void sum(int...arr){
int sum = 0;
for (int i1 = 0; i1 < arr.length; i1++) {
sum+=arr[i1];
}
System.out.println("sum = " + sum);
}
//参数不能连续写多个可变参数
//可变参数和参数一起使用要把可变参数放在最后
public static void sum2(int i, int...arr1){
}
}
二、继承
父类和子类
属性看左边,方法看右边
父类 name =。。。//name是父类里面的name
子类 name =。。。//name是子类里面的name
继承中成员变量访问特点:看等号左边是谁
继承中成员方法访问特点:看等号右边是谁
方法的重写
概述:子类中有一个方法名以及参数列表相同的方法 前提:继承 检测,在子类重写的方法上写一个@Override,不报错就是重写。 注意:子类重写父类方法之后,访问权限要大于等于父类权限。 public -> protected->默认->private 权限从大到小 子类重写父类方法,方法名和参数列表要一样 私有方法,构造方法,静态方法不能被重写。 子类重写父类方法,返回值类型应该是父类方法返回值子类类型
接口
接口的定义和使用
接口:是一个引用数据类型
关键字:
1.interface 接口
public interface 接口名{}
2.implements 实现
public class 实现类类名 implements 接口名{}
(实现类类名命名一般在后面加一个Impl,用于区分这是实现类而不是普通类比如 InterImpl)
使用:
1.实现类实现接口
2.重写接口中的抽象方法
3.创建实现类对象(接口不能直接new对象)
4.调用重写的方法
接口中可定义的成员:
抽象方法:public abstract
定义格式:public abstract 返回值类型 方法名(形参);
注意:不写public abstract 默认也有
使用:1.定义实现类,实现接口
2.重写抽象方法
3.创建实现类的对象,调用重写的方法
默认方法:
格式:public default 返回值类型 方法名(形参){
方法体
return 结果 }
使用:
1.定义实现类,实现接口
2.默认方法可重写,可不重写
(但是当一个类实现多个接口时,如果多个接口中默认方法有重名的,且参数一样的,必须重写一次)
3.创建实现类对象,调用默认方法
静态方法:
格式:public static 返回值类型 方法名(形参){
方法体
return 结果 }
使用:接口名直接调用
抽象方式有点兴师动众:接口里面定义抽象,后面都要强制重写
默认方法和静态方法:可以临时小功能使用
成员变量
格式: public static final 数据类型 变量名 = 值 相关知识点:final final 代表最终值,被它修饰的变量,不能二次赋值,可视为常量. 特点:不写 public static final 默认也有 使用:接口名直接调用 注意: 1.被 static final 修饰的变量要手动赋值 2.习惯上将 static final 修饰的变量大写,这是开发是默认的习惯
接口的特点
1.一个接口可以多继承 ->一个接口可以继承多个接口(一个子类不能继承多个父类)
public interface InterfaceA extends InterfaceB,IneterfaceC{}
2.接口可以多实现 ->一个实现类可以实现一个或者多个接口
public class Interface implements InterfaceA,IterfaceB,InterfaceC{}
3.一个子类可以继承一个父类的同时实现一个或者多个接口
public class zi extends Fu implements InterfaceA,InterfaceB,InterfaceC{}
4.注意:
无论是继承还是接口,父类或者接口里面存在抽象方法,子类或者实现类都要重写.
(如果一个类实现多个接口时,其中接口中的抽象方法有重名且参数一样,那么这个重复的只需要重写一次就可 )
接口与抽象类的区别
相同点: 1.都位于继承体系的顶端,用于被其他类实现或者继承 2.都不能new 3.都包含抽象方法,其子类或者实现类必须重写这些抽象方法 不同点: 1.抽象类一般作为父类使用,可以有成员变量,构造,成员方法,抽象方法等(抽象类:成员变量,构造,方法) 2.接口成员单一,一般抽取接口,抽取的都是方法,被视为功能的大合集。(接口:方法) 3.类不能被多继承,但是接口可以多继承。
Java后端学习路线 文章被收录于专栏
Java基础 MySQL
查看17道真题和解析