1.抽象
- 设计类的过程称为抽象
- 类是对象的抽象,类是相同或相似的特征和行为的对象的抽象
2.封装
- 使用各种合适的访问限定符修饰属性方法和类
- 规范:类都是public的,方法都是public、属性是private的
- 属性的访问:构造方法/访问器方法
public所修饰的属性、方法和类都是可见的
四种访问修饰符都可以修饰属性、方法
public和package可以修饰类,private和protected不能修饰类
3.继承
类和类之间的关系:
- 被继承的类叫做父类(超类、基类、元类、祖先类、上层类)
- 继承父类的类叫做子类(后代类、继承类)
对于父类所有的东西(属性、方法),子类都有。子类可以在父类的基础上进行扩充。继承本质上是提高类代码的复用性
继承的语法:
父类:
public class A{
}
子类(B继承A):
public class B extends A{
}
注意:
- extends表示继承,s 不能省略
- Java在类层次上只支持单继承:一个类只能有一个直接父类
- 父类的属性和方法子类都拥有,但是不一定能用。父类的私有属性,子类不能直接访问。
- 构造方法不能继承(但是…)
- 如果子类自定义了和父类重名的属性,会直接覆盖(重名的方法可能覆盖,可能重载)
- 一个类可以有很多子类
- 子类之间是兄弟关系,之间互不干涉也无法继承
- 父类的私有属性,子类拥有但不能直接访问,可以使用从父类继承来的公有(public修饰)的访问器访问
辟谣言论
- 子类只能继承父类的非private属性(错)(访问器方法)
- 构建子类对象的时候,先执行父类的构造方法(错)
- Java是一种堆栈结构(错)
方法的重写(子类方法对于父类方法的重新实现)
注意:
- (1)如果子类不重写父类方法,子类对象直接使用父类的方法
- (2)如果子类重写父类方法,子类对象使用重写后的方法
- (3)重写方法时,方法名和参数列表都不允许修改,访问限定符的范围允许放大
重写快捷键:
Alt + S ----->Override or Implements Methods…----->选择要重写的方法---->选择OK
重写和重载的区别:
(1)重写只能发生在两个类之间,重载可以在一个类的内部
(2)重写是父类方法的重新实现,父类方法在子类对象中无法调用,重载时对方法的延伸实现,是方法更具有多样性
(3)@Override
注释(注解),方法重写的标志,一般置于重写方法头之上,不写也可以,但不规范
(4)重写的方法和原方法名称和参数列表完全一致,但是重载要求方法名一致但参数列表不一致
在子类中访问父类的方法:
**父类中的方法是普通的方法,此方法的调用需要使用父类的对象进行调用
我们可以使用super来调用父类的方法
-
super类似于this,表示当前对象所继承的父类对象的引用
-
super负责在重写父类方法的时候调用父类的方法**
子类对象的构建过程(面试可能会问)
- 第一步,先执行子类的构造方法
- 第二步,在子类构造方法的第一行跳转到父类的构造方法开始执行(这里隐式调用了super();代表父类的构造方法,【注意,super();只能写在子类构造方法的第一行,也可以不写,默认生成,只是程序员不可见】)
- 第三步,父类的构造方法执行完毕之后,回到子类的构造方法继续执行
- 第四步,子类的构造方法执行完毕后,子类的对象构建完毕
继承的本质:
构建子类对象的过程中完整执行了父类的构造方法,在此过程中构建了一个父类的对象,在执行子类构造的构造的过程中,父类的对象被拆分,父类的属性和方法被拼接成子类的对象
万类之父–object
object是Java设计者提供的一个类,该类是除了自身之外其它所有类的父类
- 如果一个类没有指定父类,那么Object是当前类的直接父类
- 如果一个类通过extends指定了父类,那么Object类是当前类的间接父类
如何看到object的包:
Ctrl shirt T
在代码中输入object,把光标放上去同时按下Ctrl键,然后选择一个按键,再在新弹出界面选择下面的选项,同时选中该选项后面的第一个选框~~(field)~~ ,然后选中JDK路径,OK.