java-面向对象<二>-《下篇》

1.类的继承

      特点:a.继承可以简化类的定义。

                    b.java只支持单继承,一个子类只能继承一个父类。

                    c.可以有多层继承

                    d.子类可以继承父类的所有成员变量和成员方法,但不可以继承父 

                         类的构造方法

                     e.在子类的构造方法中可以使用 super (参数列表)来调用父类的构

                          造方法。前提该父类有构造方法(默认情况下是无参数的构造方法,只是没有显示出来,如果定义了一个显示的有参数构造方法,原来默认的构造方法将消失,所以最好定义一个有参数的构造方法和一个无参数构造方法)

2.子类对象的实例化过程

           注意:子类构造方法中,super(…)和this(…)不能同时出现,而且只能作为第一句出现在构造方法里,这是Java规定的执行流程,第一句检查是否有super和this语句。

3.覆盖父类的方法

          相同的方法名,参数列表,返回类型,不可以缩小访问权限,可以扩大。注意:可以使用super(…)调用父类的方法,这样就可以调用父类里被覆盖的方法了。

4.final关键字

          a.final标记的类不可以继承。

          b.final标记的方法不可以被子类重写。

          c.final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。

          d.final 标记的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有一次赋值的机会,而且只能在构造方

             法中显式赋值,然后才能使用。

          e.final标记的局部变量可以只声明不赋值,然后再进行一次性的赋值。

          f.final 一般用于标记那些通用性的功能、实现方式或取值不能随意被改变的成分,以避免被误用。

          注意:final 标志的变量(成员变量或局部变量)即成为常量,只能负赋值一次,但这个“常量”也只能在这个类的内部使用,

                  不能再类的外部直接使用。当用public static final 标志常量时,它就成了全局变量,而且只能在定义时赋值,不能

                  在构造方法中进行赋值。

5.抽象类和接口

                抽象类:

                            (1)抽象类或抽象方法用abstract修饰

                            (2)抽象方法只需声明,不需实现

                            (3)抽象类不能被实例化,即不可new产生对象

                            (4)含抽象方法的类一定是抽象类,抽象类可以有非抽象方法

                            (5)抽象类的子类必须覆盖所有的抽象方法才可以实例化,否则 

                                 还是抽象类

                 接口: 比抽象类还抽象的类(其方法都是抽象方法)

                               (1)用interface修饰

                               (2)所有方法都是抽象方法,且变量默认是全局静态变量

                                   public static final

                               (3)一个类可以impements(实现)多个接口

                               作用:解决了Java的单一继承带来的局限性,使类同时继承多样的特性,从而达到多重继承的目的,

                                       这同时也解决了c++带来的多重继承的问题,多重继承的危险在于一个类同时继承了同一个方

                                       法的不同实现,而接口没这问题,因为接口里的方法都没有实现

                               注意:extends关键字必须在implements关键字的前面

6.对象的多态性

             多态是指引用类型在不同情况下的多种形态。  也可以理解为通过指向父类的指针,调用不同子类中实现的方法。

             a.子类可以自动转换为父类

             b.父类只能强制转换为子类

             c.instanceof 操作符  :用来判断某个对象是否实现了某个接口或某个类

             使用规则:对象  instanceof  类名(或接口),返回值为布尔类型。

7.object 类

            在Java中object类是所有类的父类,在Java类层中是最高层类,是所有类的超类,所有object的方法适用于所有类,

            某个类没有继承时默认继承object类。

8.“equals”和“==”使用

             “==”适用于基本数据类型,比较两个值是否相等,如int型

             “.equals( )”方法适用于引用类型,比较两个对象内容是否一样。        

              Java里许多类有自己的equal( )比较方法,如String ,Integer等

              对于自定义的类,其equals方法要重新自己定义比较。

9.匿名内部类。

          匿名内部类也就是没有名字的内部类,正因为没有名字,所以匿名内部 类只能使用一次,它通常用来简化代码编写,

          但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口

abstract class Person {
    public abstract void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}
interface Person {
    public void eat();
}
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}

9.return语句

            return语句总是用在方法中,有两个作用,一个是返回方法指定类型的值(这个值总是确定的),一个是结束方法的执行

           (仅仅一个return语句)。

            对于非void返回值的方法里,必须使用“return   返回值类型一致的变量”

            对于void返回值的方法里,可以不写“return”,如果要写必须在最后一行写,因为“return”语句在默认情况隐藏在最后一行。

10.访问修饰符

        1.private :只能被类的内部其他成员访问,注意:不能再方法体内声明变量的前面加private修饰符

                  子类可以继承父类的private变量,但是无法访问.

        2.默认修饰符:可以被同一包下的其他的类访问,如果子类与父类不在同一包下,则子类不可访问父类的默认修饰符的成员

        3.protected :可以被同一包下的其他类访问,也可以被不同包下的子类访问

        4.public:可以被所有包下的其他类访问,即所有类访问

 

小总结:默认情况:无参数构造方法,Object父类继承,void方法里return语句。

posted @ 2014-11-14 14:58  beyondbycyx  阅读(183)  评论(0编辑  收藏  举报