封装
概念:
将一段代码放在一个类中(包装)
优点:
1. 解耦(降低代码的耦合度)
2.提高代码的复用率
3.保护内部代码
Java代码中的封装:
1.变量:封装一个可以改变的数据
2.数组:封装一组数据
3.方法:封装一段代码块
包的创建 与 注意事项:
创建:
右键src 新建 package 然后起 包 名 即可
注意:
- 报名的名字之间可以用 . 来隔开
- 每个点之后就是一个文件夹
- 在包中创建类…等是需要导包的
语法;
import 报名.类名
访问权限修饰符
权限修饰符范围 | 一个类中 | 当前包中 | 当前包中 或继承类 | 一个项目下 |
---|---|---|---|---|
private | true | |||
默认值不写 | true | true | ||
protected | true | true | true | |
public | true | true | true | true |
总结:
一般情况下,属性用private 修饰 , 类 与 方法 一般用public 修饰
注意:
属性用private修饰的时候 要提供get 和 set 方法
继承
概念:
父类:
在某一类(也就是多个类中)提取出的公共的属性和方法 ( 构造函数不能提取)生成父类
子类:
子类就是去除与父类相同属性和方法 ,就是子类,子类可以重写父类中的方法
继承:
子类继承父类后拥有父类的所有属性 和 方法 还可以重写 父类中的方法
优点:
-
提高代码的复用率
-
使得代码结构清晰
-
解耦合
语法:
权限修饰符 class 子类名 extends 父类名{ }
super使用:
概念:
super可以调用父类中的属性和方法
1.super调用父类中的构造方法:
语法:
super(实参列表);
注意:
1.要在子类中的第一行
2.子类中要是没有调用父类中的构造函数,那么默认调用父类中的无参构造函数
2.super调用父类中的被重写的方法:
语法:
super.方法名(实参列表);
注意:
1.重写之后由于是方法名字相等,并且形参列表也是相等,所以回用super 来判断
3.当子类属性名与父类属性名重名的时候可以用super来区分
注意:
一般不会出现这种情况,因为父类是抽取子类的共同属性 和 方法 ,证明抽取之前也不会有属性名相同的情况.
总结
本质:
子类拥有父类中的所有属性和方法
语法:
权限修饰符 class 子类类名 extends 父类名字{ }
注意:
1.单继承性:一个子类只能有一个直接父类
2.加入这个类没有写继承类,那么这个类默认继承基类 Object ,因为Java 的最终基类就是Object
多态
概 念:
一种事物可以拥有多种状态
代码中的多态
事:
方法的重写 和 重载
物:
package com.text;
public class Text {
public static void main(String[] args) {
A a = new A();
B b = new B();
// 父类对象不可以转子类对象
//B b2 = (B) new A();
// 子类对象可以转父类对象
A a2 = new B();
// b2.text();
a2.text();
b.text();
}
}
class A{
public void text() {
System.out.println("测试方法,父类");
}
}
class B extends A{
public void text02(A a) {
System.out.println("ceshi");
}
@Override
public void text() {
System.out.println("测试类,子类重写父类的方法");
}
}
重写 和 重载的区别
重写
要求:
- 必须要有继承关系
- 子类的权限修饰符必须大于 或等与 父类
- 返回值类型相同
- 方法名字相同
- 形参列表相同
- 方法体不同
重载
要求
- 必须在一个类中
- 权限修饰符无所谓
- 返回值类型无所谓
- 方法名字必须一致
- 形参列表不能相同
- 方法体不能相同