类的继承

来源:互联网 发布:疯狂java讲义的错误 编辑:程序博客网 时间:2024/09/21 06:37

1.类与类之间可以相互继承,也就是父类和子类。

父类:

public class Father{

    .....

}


子类:

public class Son extends Father{

         ....

}

2.继承的作用:

子类可以拥有父类的属性和方法。也就是说,如果new一个子类对象,这个对象既可以调用自己的方法,也可以调用父类的方法。即父类是子类的子集。子类拥有父类的所有属性和方法。


3.抽象类:

为什么会引进抽象类这个概念,具体以我自己的水平还不能理解,只能简单介绍他的一些特性。

//两小时后更新^_^ 

为什么要把父类写成抽象类?q:子类都有的方法 但是子类实现的方式不同!所以可以抽象这个类然后所有的子类就可以重写都拥有这个功能!

抽象类的关键词为abstract,抽象类不能被实例化!!!!!!抽象类不能被实例化!!!!!!抽象类不能被实例化!!!!!!(重点重点!记住啊!),父类只能有方法但却不能有方法实体(这句话是错误的,抽象类父类是可以有具体方法的只是无法被实例化)

继承的子类去实现父类的抽象方法,也就是重写(如果子类重写了所有父类的抽象方法,那他就不是abstract类了!可以实例化!常见错误,NULLPointerException!)。

//重写是基于继承,同一个方法可以重新写他的功能。而重载则是在同一个类中,具体要求是相同的,比如说参数类型,数目。

//final: 如果给一个子类前加了final,那这个子类就不能被继承了。

4.接口:

因为继承只能是单继承,即Son这个子类只能继承父类Father的属性和方法。那么如果子类Son还有一些父类没有的方法或者属性呢?这个时候就引进了接口这个属性。

接口关键词:Interface,接口中只能有方法名同样不能有方法实体,这一点和抽象类父类是一样的。

接口的实现:

public class Son extends Father implements interface {

....

}

//也就是说,继承给了子类 父类所有的东西,而接口则是给了子类父类没有的东西。


5.多态:

我觉得学习这个是最让我惊奇的...突然感觉对内存的引用有了一点模糊的认识。

多态是由于继承而产生的一种形态。 例如,

父类 对象 =new 子类();这在以前压根是不能理解的东西,为什么能这样写呢。

我们知道,new一个class,等于在内存中新建了一个对象,那么 父类 对象 同样的创建了一个对象,这个“=”等于说是把new出来对象的“值”,也就是引用传递给了父类产生的这个对象,为什么可以这样写呢?我觉得是子类这个对象所拥有的方法都在父类中有写,(当然不算接口,子类只是把父类的所有方法重写了)所以调用的时候可以直接调用父类的对象,这个对象拥有所有子类的属性和方法(不包含接口)。

例如 Father f = new Son(); 这样我们在判断到底是哪个son的时候就不用一个一个区判断,直接给出f去执行需要的方法。(大大减少代码量)

instance of :判断对象是否是某个类型。 例如 Boolean f instanceof Son(1);

那么如果我想把程序中的对象转回来转为子类的对象,我想要去实现子类的接口,该怎么办呢?

我们可以 Son s = (Son) f; 这样又可以把this的对象转为子类。(强制类型转换

6.接口的处理。

接口中可以 Interface i = new 子类();

  这样我们就可以操作接口中的方法并对其进行调用。


7.封装

//这些东西是自己琢磨出来的,有些东西可能是错的。

封装的具体流程就是,private 属性,但是Public属性的set 和get方法,这样使用的时候只能调用数值却不能去修改他。(感觉就是程序的安全性得到提高?)




欢迎大牛指点错误,水平一样的欢迎探讨!O(∩_∩)O









0 0