网站备案 怎么建站为什么公司的网站打不开
2 继承
需要两个类才能实现继承的效果。 比如:类A 继承 类B
-  
A类 称为 子类 , 衍生类,派生类
 -  
B类 称为 父类,基类,超类
 
继承的作用
-  
子类自动的拥有父类的所有属性和方法 (父类编写,子类不需要再编写) 。 代码复用
目前私有的属性和方法无法访问。
 -  
多态的基础。
 
继承语法
-  
先定义父类 (单独的类)
 -  
在定义子类的同时,实现与父类的继承关系
 
class B{String name ;public void t1() {}
}
class A extends B{//String name ;//public void t1() {}
}
A a = new A();
a.name = "zs" ;
a.t1(); 
继承特点
-  
继承具有传递性
A extends B extends CA类中,既有B类的内容,又有C类的内容
 -  
基础具有不可逆性
A extends BA类中,有B类的内容
但B类中没有A类的内容。
 -  
Java只支持单继承 (C++支持多继承)
一个类只能继承一个父类。
但可以连续继承
A extends B extends CA extends BA extends C不可以的 
3 子类对象的创建过程
-  
不存在父类对象这个概念
 
class A{String name ;public void t1(){}
}
class B extends A{int age ;public void t2(){}
}
new A(); //不算父类对象
new B() ;//这就是我们所说的子类对象 
 
-  
尽管B对象中的name属性,是从A类中继承而来的 -  
但使用过程中,直接通过name名称就可以访问到。
 -  
可以使用JOL工具来查看内存结果
 

4 super关键字
可以指定父类的内容 (属性,方法,构造方法)
一般情况下,在子类中,可以默认指定父类的内容。
-  
变量访问的顺序: 局部变量->类变量->父类变量->报错
class B{String name1 ; } class A extends B{String name1 ;public void t1(){String name1 ;print(name) ;} }但有些情况必须使用super来指定父类的内容
 
-  
子类中写了与父类中同名的属性和方法 (重写)
 -  
在子类的构造方法中,指定要调用的父类的构造方法
在创建子类对象时,不仅仅子类对象的构造方法会被调用,父类的构造方法也会被调用
是在子类构造方法的第一行被调用的。 (先调用子类的构造器,先执行完父类的构造器)
默认会在子类构造方法的第一行,执行super(),表示调用父类的无参构造器
 
class A{String name ;public void t1(){}
}
class B extends A{public void t1(){}public void t2(){name = "ls" ;name = "zs" ;super.t1();}
}
class A{int a ;int b ;public A(int a , int b){this.a = a ;this.b = b ;}public void A(){}
}
class B extends A{int c ;int d ;public B(){}public B(int c , int d){}public B(int a , int b , int c, int d){//想将a和b交给父类的构造器//super()super(a,b);this.c = c ;this.d = d ;}
}
B b =  new B(10,20,30,40); 
this和super关键字
-  
在使用上,this和super特点相似
 -  
但本质上完全不同
 -  
this的本质,是一个参数变量,存储的是当前方法所属对应的地址。
 -  
super的本质,就是一个关键字,用来指定父类的内容。这个指定效果在编译后就没有了。
而this是在运行时有所应用的。
 


