概念继承:子类引用超类,并且以关键字extends来表示
构造器:对象在加载的一瞬间(new)执行的那个程序块,那个程序代码就要构造方法
构造方法(构造器)的特点:没有返回值;没有void;和类的名字相同
1.类建立好以后,虚拟机会给我们建立一个默认构造器
2.构造器不能被继承(可以被调用);
3.当new一个子类对象的时候 会先调用父类的构造器再调用子类的构造器;
4.在调用默认构造器时可以使用 【new 方法名();】即可
*如果重载了构造器,最好把默认的构造器给弥补上 ,如果自己写了一个带有参数的构造器,那么这个构造器就会把那个默认的没有任何参数的构造器给覆盖了
如:A a = new A();
a----就是对象的句柄
重写toString()方法:
public String toString(){
return "123";
}
在输出时用a.toString()
5.构造函数中经常用的super
1)调用父类的方法
2)调用父类的属性
3)调用父类的构造方法
1>.子类构造的过程中一定会调用父类的构造方法
2>.super(多个参数)调用父类的构造方法
3>.如果子类的构造方法没有显示的调用父类的构造方法 那默认调用父类无参数的构造方法
4>.如果子类的构造方法没有显示的调用父类的构造方法,父类无参数的构造方法还没有提供那么编译就会出错
重写概念:发生在子类和超类之间,子类覆盖父类的方法
1、属性不能被覆盖和重载
2.父类的引用指向子类的实例,子类如果覆盖父类的方法。最后调用的是子类的方法
叫做虚方法;整个调用的过程就成为动态绑定的过程;
3.覆盖方法时,访问的权限不能降低
4.重写的规则:方法名,方法参数(个数,类型,顺序),返回值一样
重载概念:要在同一个类中,方法名一致,方法参数的个数不同或者参数的类型不同
抽象类 :abstract修饰的方法 称为抽象方法
1.抽象方法不能有方法体
2.如果一个类里边有一个抽象方法那么这个类要声明为抽象类
3.如果子类继承自一个抽象类 那么就要实现这个抽象类里定义的所有抽象方法
或者把父类的抽象方法在子类中依旧声明为抽象的方法 子类声明为抽象类
4.抽象类里可以没有抽象方法
5.抽象类不能实例化对象
接口 inferface修饰的方法称为接口
Java是单继承(只能继承一个父类)。可以多实现(可以继承多个接口)!!!!!!
1.接口里的方法都是抽象方法
void run(); 相当于 public abstract void run();
2.接口里的属性都是静态属性
int id=100; 相当于 public static final int id=100;
3.如果一个类实现接口 就要实现接口里所有没有实现的抽象方法,也可以把这个类声明成abstrcat不实现其中的接口
实现使用的关键字: implements
4.接口不能实例化对象
5.接口 new实现类 也是多态的表现 和父类的引用指向子类的实例是类似的
6.软件开发过程中:接口的制定者 接口的实现者 接口的使用者 三者分开
7.多个无关的类可以实现同一个接口
8.一个接口可以继承其他接口 同时也就继承了其他接口的方法
9一个类可以实现无关多个接口 在某种程度上实现的多继承
最后温馨提示;慎用继承
1、父类变,子类就必须变。
2、继承破坏了封装,对于父类而言,它的实现细节对与子类来说都是透明的。
3、继承是一种强耦合关系。