java中类的复用:
1、类的复用有几种方法
(1) 组合
(2) 继承:
长处: 1.进步代码的复用性; 2.进步代码的维护性(以后在增加功用的时分,只要在基类中增加一次,那么其他子类就具有了这些代码的特性);3.让类与类之间产生了联系,是多态的条件。
缺陷:1.耦合性增强了,都说java不支持多承继是为了安全性,可是这个安全性是指什么呢?
class Demo1{
public void demo(){
System.out.println("我是demo1类的办法");
}
}
class Demo2{
public void demo(){
System.out.println("我是demo2类的办法");
}
}
public class BigDemo extends Demo1,Demo2{
//这个承继了Demo1,Demo2,可是两个类都有demo()办法,可是调用的是哪个呢?这就是导致不安全性的
//原因地点
承继中要留意的问题:
a:父类中私有办法不能被重写
在一个子类被创立的时分,首要会在内存中创立一个父类目标,然后在父类目标外部放上子类独有的特点,两者合起来形成一个子类的目标。所以所谓的承继使子类具有父类一切的特点和办法其实可以这样了解,子类目标的确具有父类目标中一切的特点和办法,可是父类目标中的私有特点和办法,子类是无法拜访到的,只是具有,但不能运用。
****视频上的说法是错的。
b:子类重写父类办法时,拜访权限不能更低
c:父类静态办法,子类也有必要经过静态办法进行重写
视频上说,算不上办法重写,可是现象是如此???
承继面试题:
class Fu {
static {
System.out.println("静态代码块Fu");
}
{
System.out.println("结构代码块Fu");
}
public Fu() {
System.out.println("结构办法Fu");
}
}
class Zi extends Fu {
static {
System.out.println("静态代码块Zi");
}
{
System.out.println("结构代码块Zi");
}
public Zi() {
super();//隐含
System.out.println("结构办法Zi");
}
}
public class Demo{
public static void main(String[] args){
Zi z = new Zi();
}
}
留意:
当代码履行到Zi z = new Zi();的时分,第一时间是加载父类的.class文件,而不是优先加载子类,这是由于子类承继了父类,含有父类的数据,如果优先加载子类,就会导致,在子类中,有些数据不得初始化,会导致问题
署理:
/*
界说一个飞船控制器类
*/
public class SpaceShipControls{
public void up(){
}
public void down(){
}
public void left(){
}
public void forward(){
}
}
/*
界说一个飞船类
*/
public void SpaceShip{
private String name;
//获取署理类的目标
private SpaceShipControls controls = new SpaceShipControls();
public void up(){
//经过署理目标,来署理办法
controls.up();
}
public void down(){
controls.down();
}
public void left(){
controls.left();
}
public void forward(){
controls.forward();
}
}
文章来源 西安Java培训