j2ee(3) 面向对象

1.super关键字
    * 使用super关键字调用父类的成员变量和成员方法。具体格式:
      super.成员变量
      super.成员方法([参数1,参数2...])

    * 使用super关键字调用父类的构造方法。具体格式:
      super([参数1,参数2...])

    * 通过super调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。

    * 子类的构造方法中一定会调用父类的某个构造方法。如果没有指定调用父类的某个构造方法,在实例化子类对象时,会自动调用父类无参的构造方法。

2.final关键字
    * final类   使用final来修饰的类叫作final类。final类通常功能是完整的,它们不能被继承。

    * final方法 方法不可以被子类的方法重。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。

    * final变量 经常和static关键字一起使用,作为常量。final变量只能赋值一次,是只读的。

    * final 修饰数组或其他对象,则对象地址不可变,但内容还可变      

    --注:如想对final深入理解,需参考《Java初学者都必须理解的六大问题》

3.抽象类
    * 抽象方法 它只有声明而没有具体的实现。声明格式为:abstract void fun();
    * 抽象类   使用 abstract 关键字修饰的类为抽象类
      --抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public
      --抽象类不能用来创建对象
      --抽象类同样可以拥有成员变量和普通的成员方法
      --继承抽象类的子类,必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类

4.接口
    *接口中的变量会被隐式地指定为public static final变量,并且只能是public static final变量
    *接口中的方法会被隐式地指定为public abstract方法,并且只能是public abstract方法
    *非抽象类遵循了某个接口,就必须实现该接口中的所有方法。对于遵循某个接口的抽象类,可以不实现该接口中的抽象方法

5.抽象类与接口区别
    * http://www.cnblogs.com/felixzh/p/5938544.html
    * http://www.cnblogs.com/beanmoon/archive/2012/12/06/2805221.html

6.多态
    * 在同一个方法中,由于参数类型的不同而导致执行效果各异的现象就是多态

    * 使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象的不同,得到不同的效果。例如:

        //定义接口 Animal
        interface Animal{
            void shout();        //定义抽象shout()方法
        }

        //定义 Cat 类 实现Animal接口
        class Cat implement Animal{
            //实现shout()方法
            public void shout(){
                System.out.println("喵喵.....");
            }
        }

        //定义 Dog 类实现Animal接口
        class Dog implement Animal{
            //实现shout()方法
            public void shout(){
                System.out.println("汪汪.....");
            }

        }    

        //定义测试类
        public class ExampleTest(){
            public static void main(String[] args){
                Animal an1 = new Cat();        //创建Cat对象,使用Animal类型变量引用
                Animal an2 = new Dog();        //创建Cat对象,使用Animal类型变量引用
                animalShout(an1);            //调用animalShout(),将an1作为参数传入
                animalShout(an2);            //调用animalShout(),将an2作为参数传入
            }

            //定义静态的animalShout()方法,接收一个Animal类型参数
            public static void animalShout(Animal an){
                an.shout();
            }
        }    

    * 将子类对象当作父类使用时不需要任何显示地声明,但不能通过父类变量去调用子类中的某些方法(子类中存在,父类中不存在的方法)。    

        //定义接口 Animal
        interface Animal{
            void shout();        //定义抽象shout()方法
        }

        //定义 Cat 类 实现Animal接口
        class Cat implement Animal{
            //实现shout()方法
            public void shout(){
                System.out.println("喵喵.....");
            }

            //定义sleep()方法
            public void sleep(){
                System.out.println("猫睡觉.....");
            }

        }

        //定义测试类
        public class ExampleTest(){
            public static void main(String[] args){
                Cat cat = new Cat();        //创建Cat对象,使用Animal类型变量引用
                animalShout(cat);            //调用animalShout(),将 cat 作为参数传入
            }

            //定义静态的animalShout()方法,接收一个Animal类型参数
            public static void animalShout(Animal an){
                an.shout();
                an.sleep();
            }
        }        

        --当编译器检查到代码an.sleep()时,发现Animal类中没有定义sleep()方法而报错。由于传入的对象是Cat类型,在Cat类中定义了sleep()方法,通过Cat类型的对象调用sleep()方法是可行的,
        因此可以在animalShout()方法中将 Animal类型的变量强转为Cat类型。代码具体修改为:

            //定义静态的animalShout()方法,接收一个Animal类型参数
            public static void animalShout(Animal an){
                Cat cat = (Cat) animal;     //将 Animal 类型的变量强转为Cat类型
                cat.shout();
                cat.sleep();
            }
时间: 2024-10-13 14:47:13

j2ee(3) 面向对象的相关文章

j2ee(2) 面向对象 上

1.类的封装 *在定义一个类时,将类中的属性私有化,即使用prviate关键字来修饰,私有属性只能在它所在的类中被访问.为了能让外界访问私有属性,需要提供一些使用public修饰的公有方法,其中包括用于获取属性值的getXxx()方法和设置属性值的setXxx()方法. class Student { private String name; //将name 属性私有化 private int age; //将 age 属性私有化 //下面是公有的getXxx() 和 setXxx()方法. p

面向对象 -教案

面向对象思想:万物皆对象 面向对象三大特性:封装:        封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就    是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员. 简介 在面向对象编程中,封装(encapsulation)是将对象运行所需的资源封装在程序对象中——基本上,是方法和数据.对象是“公布其接口”.其他附加到这些接口上的对象不需要    关心对

java基础教程-面向对象(一)

一.面向对象 1.1 java键盘输入 1.1.1这种方法我认为是最简单,最强大的,就是用Scanner类 import java.util.Scanner; public static void main(String [] args) { Scanner sc = new Scanner(System.in); System.out.println(“请输入你的姓名:”); String name = sc.nextLine();//字符串输入 System.out.println(“请输入

j2ee学习路线

目前JAVA主要分三个方向:J2EE(java 2 enterprise edition,也就是JAVA的企业级标准,目前应用最多也最广泛,技术相对成熟).J2ME(java 2 micro editon,java在微型系统上的应用,像手机.PDA.电视机机顶盒一类,国家3G标准一旦实施,J2ME将会应用的更加广泛). J2SE(Java 2 Standard Edition标准版,主要用于个人用户) 如果有人想学J2EE的话,推荐一下学习进阶步骤: ①先学基本的JAVA语法,推荐<Thinki

J2EE之13个规范标准

主要是关于j2EE十三个规范的总结. java基础知识 首先java分为三类:J2ME.J2SE.J2EE. 根据开发软件的大小和量级他们的作用分别不同,J2ME是开发为机顶盒.移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台:J2SE是java平台开发的标准版,用它基本山可以开发很多桌面程序的开发:而J2EE是开发 企业级系统程序的. 今天主要介绍J2EE,对于它的了解并不是一种新的语言,而是向在学习面向对象的时候,跟设计模式一样,根据不同的问题,规定一个框架,以及解决模式,但是并

通俗理解J2EE的13种规范

学习到Java就不得不了解为人熟知的13种规范,小编从网上各种搜集资料,可是都是一些专业性的术语,确实很令人费解,讲解的都很抽象.在小编的不懈努力之下,通过看别人的博客,汇总了以下的内容. 1.JDBC(java Database Connectivity):   官方:JDBC API为访问不同的数据库提供了一种统一的途径,就像ODBC一样,JDBC对开发者屏蔽了一些细节问题,同时,JDBC对数据库的访问也具有平台无关性. 小编:学习过.NET的一定了解ODBC,这是属于同一个性质的,就是为了

J2EE的13个规范总结

什么是J2EE? 在企业级应用中,都有一些通用企业需求模块,如数据库连接,邮件服务,事务处理等.既然很多企业级应用都需要这些模块,一些大公司便开发了自己的通用模块服务,即中间件.这样一来,就避免了重复开发,开发周期长和代码可靠性差等问题.但是,各公司的中间件不兼容的问题就出现了,用户无法将它们组装在一起为自己服务.于是,"标准"就应运而生了. J2EE就是基于JAVA技术的一系列标准. J2EE是Java2平台企业版(Java 2Platform Enterprise Edition)

Atitit 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)的区别和联系

Atitit 面向对象编程(OOP).面向组件编程(COP).面向方面编程(AOP)和面向服务编程(SOP)的区别和联系 1. 面向组件编程(COP) 所以,组件比起对象来的进步就在于通用的规范的引入.通用规范往往能够为组件添加新的能力(就像上面所讨论的), COP比OOP更进一步.通常OOP将数据对象组织到实体中.这种方法具有很多优点.但是,OOP有一个大的限制:对象之间的相互依赖关系.去掉这个限制的一个好的想法就是组件.组件和一般对象之间的关键区别是组件是可以替代的. 3.什么是面向方面编程

J2EE修炼之四书五经[转自2004年程序员]

J2EE修炼之四书五经 作者:彭晨阳 J2EE其实没有四书五经,因为J2EE一直如汹涌澎湃的大江,推陈出新,不断高速发展,这是一种带领我们走向未来的技术.当然,如何在这种气势如虹的潮流之中不至于迷失方向,需要相关指南性书籍的引导.本文将从线程和模式两个方面推荐J2EE书籍,这两个方面正好是两种不同的方向,线程是从微观.底层机制入手:而模式则是从设计高度来看待J2EE. 线程(Thread) 首先,线程是很多J2EE初学者容易忽视的一个基本知识,可以说,无论你是从Java世界的哪一扇门进入J2EE