- super关键字:调用父类的属性方法及构造方法。当子类与父类中有重名的属性,用super显式的调用父类的属性。或者当子类重写了父类的方法的话,用super所显示的调用父类的方法。或者通过super(形参列表)来显式的调用父类中指定的构造器(在构造器内部,super(形参列表)必须要声明在首行,所以this与super不能同时出现在构造器内部),不写super的话,默认调用的是父类的空参构造器。建议设计一个类时尽量提供一个空参构造器。
- 子类对象实例化的全过程:创建任何对象都要调用object父类。一级一级的往上调用。
3.多态:可以理解为一个事物的多种表现形态。具体表现例如:方法的重载和重写,子类对象的多态性。public class Class extends father{ public static void main(String[] args) { eat(); father a =new father(); System.out.println(a.toString());//说明每个类都是调用过object类的构造方法的。 } } class father{ private int i=10; public static void eat() { System.out.println("hello"); } }
Person p=new Man();//父类引用指向男性对象,实际执行的是子类重写父类的方法
4. 多态使用的前提:继承+重写。
5.程序运行分为编译和运行,前者看左边,运行看右边。
6.向上转型和向下转型(类似于数据类型的转换):
Person p1=new Woman();//change top
Woman w=(Woman)p1;//change under
w.shopping();//the unique method of woman
7.instanceof 判断该引用是哪个类(判断是否可以进行转型):
if(p1 instanceof Man){
Man m = (Man) p1;
}
if(p1 instanceof Person){
syso;
}//子类的对象一定也是父类的对象
8.封装的作用:设定修饰符限制属性及方法的内外部调用。
继承的作用:写好的类等能够直接拿过来用。
多态的作用:如果一个方法的形式参数是preson类型的引用,有了多态之后,那么这个方法也能对man和woman的对象使用。
9.举个例子:
package object;
public class Class{
public static void main(String[] args) {
Animal b=new Animal();
test(b);
test(new Dog());//向上转型
}
public static void test(Animal a){
a.move();
if(a instanceof Dog)//很神奇吧。instanceof看的好像是右边的对象部分。
((Dog)a).own();//向下转型
}
}
class Animal{
public void move() {
System.out.println("动物");
}
}
class Dog extends Animal{
Dog(){
super();
}
void own() {
System.out.println("狗");
}
}
10.多态只适用于方法,属性不可以。