java的三大基本特征
1、 继承
类是对对象的抽象,继承是对某一批类的抽象,从而实现对师姐更好的建模
提高代码的复用性
extends 的意思是“扩展”,子类是父类的扩展
2、 方法的重写(override)
Ps: override 与overload没有关系
在子类中可以根据需要从基类中继承来的方法来进行重写。
重写方法必须和被重写方法具有相同的方法名称,参数列表和返回类型
重写方法不能使用比重写方法更加严格的访问权限(由于多态)
3、 Object类是所有java类的根基类
如果在类的声明中使用extends关键字指明其基类,则默认为Object类
小结:
1、子类继承父类,可以得到父类的全部属性和方法(但是父类的构造方法不会被继承)
2、java中类只有单继承,没有像C++那样的多继承,多继承会引起混乱,使得继承链过于
复杂,系统难以维护。就像现实生活中,如果一个人有多个父母亲,那么是一个多么混乱
的世界。(一个类只能有一个直接父类)
3、多继承,就是为了实现代码的复用性,却引入了复杂性,使得系统类之间的关系混乱。
4、java中的多继承,可以通过接口来实现
5、如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object
6、不同的叫法:超类,父类,基类,子类,派生类
代码Demo
<span style="font-size:18px;">public class Animal {
String eye; // 成员属性
// 成员方法 --> run()、eat()、sleep()
public void run(){
System.out.println("run!");
}
public void eat(){
System.out.println("eat!");
}
public void sleep(){
System.out.println("zzzz");
}
}
class Mammal extends Animal{
//extends -->继承了Animal 的东西,有了animal的东西
public void lactation(){
System.out.println("lactation!");
}
}
class Birds extends Animal{
public void eggsheng(){
System.out.println("卵生!");
}
public void run(){
//super.run(); 调用父类的方法
System.out.println("run!!!!");
}
}</span>
Super 关键字
Super是直接父类对象的引用,可以通过super来访问父类中被子类的覆盖的方法或者属性
普通方法:没有顺序限制,可以随便调用
构造函数中:任何类中的构造函数中,若是构造函数的第一行代码没有显示的调用,那么super(..);那么java默认都会调用super(); 作为父类的初始化函数,写不写super();是无关紧要的
Final 关键字
修饰变量:---常量
修饰方法:---该方法不可被子类重写,但是可以被重载!
修饰类:----修饰的类不能有子类,不能被继承。比如:Math
封装(encapsulation)
1)、为什么需要封装?封装的作用和含义?
隐藏对象内部的额复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性,可维护性。
程序设计要追求“高内聚,低耦合”。
高内聚就是类的内部数据操作细节自己完成,不允许外部干涉。
低耦合:仅暴露少量的方法给外部使用
使用访问控制符,实现封装
| 同一个类 | 同一个包中 | 子类 | 所有类 |
private | * |
|
|
|
default | * | * |
|
|
protected | * | * | * |
|
public | * | * | * | * |
封装要点:
类的属性的处理
1. 一般使用private(除非本属性确定会上子类继承)
2. 提供相应的gettle/settle方法来访问相关属性。这些方法通常是public,从而提供
相对应的属性的读取操作。(注意:boolean变量的get方法是用:is开头!)
一些只用于本类的辅助性方法可以用private
希望其他类调用的方法用public
3.多态
多态性是OOP中的一个重要特性,主要是用来实现动态联编的,换句话说,就是程序的最终状态只能是执行的过程中才被决定而非编译期间就决定的。这对于大型系统来说就能提高系统的灵活性和扩展性。
Java中如何实现多态?多态的好处?
引用变量的两种类型:
编译时类型(模糊一点,一般是一个父类)
由声明时的类型决定
运行时类型(运行时,具体是哪个子类就是哪个子类)
由实际对应的对象类型决定
多态的存在要有3个必要条件
1.有继承。2.有方法重写。3.父类引用指向子类对象