1.面向对象的特征
面向对象的特征:封装、继承、多态
2.封装
类的封装是属性私有化private,对外提供公开的(public)方法 set赋值(有参数,无返回值)get取值(无参数,有返回值)
添加有参和无参的构造方法
3.this关键字
用来指代当前的对象一般用来区分成员变量和参数中的局部变量
this.变量都是成员变量。
4.构造方法和普通方法有什么区别?
构造方法的方法命一定要与类名一致
普通方法随意命名符合命名规则和规范即可
构造方法没有返回值类型 连void也没有
普通方法必须要有返回值类型
构造方法在实例化对象的时候才会调用
普通方法是在对象.方法名的时候调用
构造方法一般用在封装类中
普通方法可以写在任意的地方
5.继承
- extends是写子类中的
- 继承只能是一个类继承一个类 但是一个父类可以有多个子类 单继承 不可能继承多个类
- 实例化子类对象时会先调用父类的构造方法。
- 继承关系中不能调用父类的私有化属性和方法子类可以继承父类的属性和方法,不过属性和方法不能直接调用
6.super关键字
Super()方法
用在子类中指代父类对象
super() 调用父类的构造方法
并且super()调用父类的构造方法必选放在第一行。
super关键字
可以调用父类的普通方法,super.方法名
可以调用父类的属性 super.属性
super 也是调用不到父类的私有化属性和方法的
super关键字不能用在静态方法中
7.什么是重写?重写和重载的区别(overload和override区别)
- 重载发生在同一类中,重写发生在父子类继承关系中
- 重写要求重写非私有非静态的方法,重载没有要求。
- 重载与返回值无关,重写要求返回值必须一致
- 重载要求参数类型顺序个数只要有一个不同,重写要求参数必须相同
- 重写要求子类的访问权限不得小于父类 但是重载没有求
- 重写要求子类不得抛出比父类更多更大的异常,重载没有要求
8.访问权限修饰符
当前类 | 当前包 | 子类(同包) | 子类(不同包) | 任意地方 | |
private | √ | ||||
default | √ | √ | √ | ||
protectde | √ | √ | √ | √ | |
public | √ | √ | √ | √ | √ |
访问权限从小到大
private(私有的)<default(默认)<protected(受保护的)<public(公共的)
注意:你调用不到变量或者方法不是因为不存在这个变量而是因为你的访问权限不足。
9.抽象
abstract 修饰的类叫做抽象类
- 抽象类不能被实例化
- 想要使用抽象类只能通过继承的方式
- 抽象中可以有普通方法也可以有抽象方法
19.2抽象方法
abstract 修饰的方法叫做抽象方法
- 抽象方法没有方法体 没有{}
- 如果一个类继承了抽象类就必须重写抽象类中的抽象方法。除非子类也是抽象类不用重写抽象方法
**** 抽象类中一定有抽象方法 。False
*****有抽象方法的一定是抽象类。 true;
10.static
实例变量:每创建一个对象 那么每一个对象拥有自己独立的一份属性和方法(static除外),当我们修改了其中一个对象的实例变量的值另一个对象不会有任何影响 因为互不相关。
静态变量:我们创建了多个对象这个时候多个对象共享同一份变量 那个这个变量就是静态的属性,用static关键字修饰,这个时候我们通过其中一个对象修改这个静态变量的值,那么另外一个对象看到这个静态变量的值也会改变。
static修饰的属性 静态属性
static修饰的方法 静态方法
静态的属性和方法 可以通过类名.属性/类名.方法名直接访问(不需要实例化对象)
static修饰的属性可以认为是类的。它不跟其他属性一样 不是独立于对象中的