java面向对象和类

来源:互联网 发布:大智慧大数据终端 编辑:程序博客网 时间:2024/04/27 13:21

注:面向对象概念通用

一 类与对象

类:对一类事物的描述,是抽象的,概念上的定义。

对象:是具体的事物个体,他是类的实例。

类属性:对象的静态特征抽象为属性

类的方法:对象的动态特征抽象为方法。

二 面向对象

面向对象特征:多态,继承,封装。

多态:多种形态,指的是父类的属性和方法在不同子类中具有多种形态或者类在不同的实例有不同的形态表现(同一个消息根据发送对象的不同而采取不同的行为方式。简单就是根据发送对象的不同调用不同的函数)。程序中表现为方法重载和方法重写,静态多态(编译时的多态)和动态多态(晚绑定,运行时候的多态)

继承:描述的对象之间的关系。能让某类继承另一类的属性和方法。实现代码重用,简化类的定义。

           子类继承了父类的属性和方法,只需要在子类中描述他特有的属性和方法。

           继承规则:只支持单继承(单对单),Object是最高层父类。

          格式:修饰符 class 类名[extends[父类]]

封装:将内部细节尽量的隐藏起来,只提供外部接口。

           类的属性用private封装属性(private int age),只能通过setter和getter来访问(public getAge/setAge)

构造方法:对象初始化。方法名与类名一直,没有返回值。系统默认生成一个无参数无内容的构造函数(不显示的)。

                   构造方法不能被继承,但是能被调用。子类在构造方法中使用super(参数列表)来调用父类的构造方法。如果子类的构造方法中没有显示的调用父类的构造方法,也没有使用this关键字调用重载其他的构造方法,那么默认调用父类的无参构造方法,如果父类没有,那么编译不过。

方法重载:同名不同参数列表。

包的基本概念:解决类的命令冲突问题,提供一个类的多重类命名空间。引用格式和.net一样。

                                    package 包名[.上层包名[.上层包名...]]

                                    public class P1..} 指名该类所在的包

                           编译和生成包

                                   如果程序中已经定义了包,编译的时候:javac -d destpath P1,java 那么编译器会自动在destpath目录下建立一个子目录(包名),并且生成的字节码文件也放在子目录里面。

                                 javac P1那么会在P1文档所以在目录下创建一个子目录(包名)

                           引用定义在不同包中的Java类,需要用import

                                 格式:inport 包名.类名   import java.类名引用java基类库。

                           java主要包:lang 包含一些java语言的核心类,不用引用自动导入

                                                 awt 用来构建和管理应用程序的图形界面 gui

                                                 applet 有关applet的

                                                net 网络

                                                io  输入\输出流

                                                util 使用工具类 与日期相关的。

访问控制:

public:无限制

protect:保护的:同一个类,同一个包,子类

private:私有:同一个类

default:默认的:同一个类,同一个包

方法重写:子类可以对从父类继承过来的方法进行重写。重写方法必须与父类的保持一样的函数名,参数列表,返回类型。修饰符不能比父类更严格。

关键字super: 用来引用父类的成分(属性,成员方法,构造方法)

多态:一个接口,多个方法(同一个消息根据发送对象的不同作出不同的行为)。 子类可以调用父类的方法(当成父类对象来使用),子类到父类的类型转换默认进行,而父类到子类要用强类型转换。可以使用instancesof操作符测试类型


虚方法调用:

抽象类:用abstract修饰一个类,那么该类为抽象类,修饰一个方法,那么该方法为抽象方法。含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。抽象类不能实例化,抽象方法为空,只需声明。

例:abstract class A{ abstract void B();}

接口:这种抽象类只包含常量和抽象方法,抽象方法不需要用abstract修饰。接口用interface修饰。

         多个无关的类可以实现同一个接口,一个类可以实现多个接口。一个类只能实现一个抽象类。

        用途:通过接口可以实现不相关类的相同行为。通过接口可以指名多个类需要实现的方法。可以了解对象的交互界面,而不需要了解对象所对应的类。

Object类: 在Java中,一切类都是继承关系,如果没有指明继承关系,那么默认继承Object类。

                   对于一个完整的类来说,应该重写object类的3个方法:

                    toString()对象打印时候调用。如System.out.println(p1);直接输出我是张三,今年19岁。这样子。

                    equals();对象比较时候使用;object比较是的地址值,而对象比较的是实际内容,那么应该将equals方法重写。

                    hashCode();哈希表值。

this:略。

方法:略。

static:和C#一样,静态成员和静态方法一致,都只能从类调用,类名.静态成员(方法)。静态模块:在类的定义体中,可以包含static语句模块,该模块只在其所属的类被载入的时候执行一次,通常是用来初始化static属性。

final:被修饰的类不能被继承,被修饰的方法不能被子类重写,被修饰的变量为常量,只能赋值一次,被修饰的成员变量必须在声明的同时显示赋值才能使用。

0 0