java面向对象

来源:互联网 发布:动力学仿真软件ls 编辑:程序博客网 时间:2024/06/05 16:09

【类】类是同一类对象的抽象。类是由静态属性和动态属性(方法)构成。

【对象】对象是对象的实例。


【类与类之间的几种关系】

1、关联关系

这是最弱的一种关系,一个类A的对象在类B的方法参数中被引用。

2、继承关系(一般与特殊)

一个类可从多个类中继承。

3、聚合关系(整体与部分)

     球队由队长和队员构成。

4、实现关系(接口中)

工人和农民照顾猫咪(照顾实现的过程)。

5、多态关系


【成员变量初始化】

定义成员变量可对其进行初始化,若不进行初始化,java使用默认的值对其初始化。


构造方法的名称必须与类的名相同,且不能加返回类型(void)也不行!!!

类名的首位字母需大写!!方法和变量名首字母需小写!!并且命名方式按照驼峰起名法!!!


new出的东西在heap中占用一部分新的空间,只要一经new,则开辟一块新的内存!!!


【方法重载】

在一个类中可定义多个名称相同的方法,但是其参数必须不能相同!!!返回类型可以不相同!!!


【this关键字】

1.在类的方法定义中使用的this关键字代表该方法的对象的引用。

2.this看做一个变量,是当前对象的引用。

3.当必须指出当前使用方法的对象是谁时要使用this。


【static】

一、关于静态成员变量

1、一个类可定义多个静态成员变量。

2、一个类中所有的对象共用声明的一个静态变量。

3、静态成员变量使用时直接:类名.静态成员变量名称。

二、静态方法

1、用static声明的方法是静态方法,在使用时可用对象名或类名()不需实例化,直接:类名.方法名(比如Systemn.out)。

2、在静态方法中,不能访问该类的非静态成员变量!!!!!!



【package & import】

为便于管理大型企业软件系统中众多的类,解决命名冲突,java引入包机制,提供类的多重命名空间。

1、package 放第一行!!!

2、使用方式: package pkg1[.pkg2[.pkg3...]]。

3、只有同一project下的类可用import引用。

4、不同工程下的类需打包成jar包才能引用。

(在jdk中的rt.java中除java.lang下的类可直接使用,其他的类必须用import引用(例如;java.net 、java.io 、java.util等)。

打包jar的方法(用命令指示符操作):

1)进入所在文件 。

2)输入jar 。

3)jar -cvf 命名.jar*.* 。



【访问控制】

1、类的成员变量的访问权限

权限类型类内部同一个包子类任何地方privateyesdefaultyesyesprotectedyesyesyespublicyesyesyesyes

2、类的访问权限

类中只有default和public两种权限修饰方法。

1)、public可在任意地方被访问。

2)、default只能被同一个包内部的类访问。



【类的继承】

通过关键字extends继承。继承方法:class 子类名 extends 父类名 。

1、在java中一个子类只能有一个父类,一个父类可有多个子类。

2、子类通过继承,子类可拥有父类的所有成员(包括成员变量和方法)。



【方法重写】

子类继承的父类的方法不够使用时,可将父类的方法进行改写,即方法重写。

1、重写方法不能比被重写的方法的访问权限更严格。

2、重写方法的参数及方法名必须与被重写的方法相同!!!



【super关键字】

super指向当前对象的父类对象。


【继承中的构造方法】

1、子类必须调用其父类的构造方法。

2、子类可在自己的构造方法中使用super(arguement list)调用父类的构造方法。

3、使用this(arguement list)调用本类的另外的构造方法。

4、如果调用了super(arguement list),必须写在子类构造方法中的第一行!!!

5、如果子类中的构造方法没有显示调用父类的构造方法,那么系统默认调用父类中无参的构造方法。

6、如果子类的构造方法中没有显示调用父类的构造方法,而父类中又没有无参的构造方法,则编译出错!!!



【Object类】

Object类是所有类的根基类(父类)、

public class A{} ——>(等价于)public class A extends Object{}

1、public String toString(){}

其返回值是 包名+类名+哈希码 。

(哈希码都独一无二的代表一个对象,并通过哈希码可以找到这个对象)

2、public boolean equals(Object obj) {}

默认功能是判断两个引用变量指向的对象是否是同一个对象 。



【对象转型】

1、一个父类的引用类型可以指向子类的对象。

2、子类引用不可指向父类对象。

2、一个父类引用不能访问其子类对象的新增成员。

3、可以使用方法 instanceof 判断该引用变量所指向的对象是否属于该类或该类的子类。

4、子类的对象可以作为父类对象来使用称作上转型(upcasting);反之称为下转型(downcasting)。



【动态绑定/迟绑定/多态】

目的是是可扩展性达到最好。

1、多态是在运行(非编译)的过程中,判断所引用对象的实际类型,根据其实际类型调用其相对应的方法。

2、三个必要条件:

1)、有继承

2)、有重写

3)父类引用指向子类对象



【抽象类】

1、用abstract关键字修饰的类是抽象类;用abstract修饰的方法是抽象方法。

2、抽象类只能被继承,不能被实例化!!!

3、抽象方法只需声明,不需被实现。

4、含有抽象方法的类必须被声明成抽象类;抽象类必须被继承;抽象方法必须被重写。



【final关键字】

1、被final修饰的变量不能被改变(局部变量和成员变量)

2、用final修饰的方法,不能被重写。

3、被final修饰的类不能被继承。



【接口】

一、

关键字interface、implements

1、多个无关类可以实现一个相同的接口。

2、一个类可以实现多个无关的接口。

3、与继承关系相似,接口与实现类之间存在多态性。

4、定义java类的语法格式:

<modifier>class <name>[extends<superclass>][implements<interface>[,<interface>]*]{

<declarations>*

}

5、接口是抽象方法和常量值的定义的集合。

6、从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包括常量和方法的定义,而没有变量和方法的实现。

7、接口定义举例:

public interface Runner{

public static final int id=1 ;// 等价于int id=1 ;

public void start();

public void run() ;

}

二、接口特性;

1、接口可多重实现(即一个类可实现多个接口,即一个类可多重继承)

2、接口中声明的属性默认为public static final,且也只能是public static final(成员变量前的修饰符可省略)。

3、接口只能定义抽象方法,且这些方法只能默认是public的。

4、接口可继承其他的接口,并添加新的属性和抽象方法。

5、接口可被其他接口继承。

6、结构不可以被实例化!!!



【内部类】

位置:写在在包装类中,与包装类中的属性和方法并列。

修饰:private

1、好处:

1)、可以方便的访问包装类中的成员。

2)、可以更清楚的组织逻辑,防止不应该被其他类访问的类进行访问。

**3)、当一个类要实现两个接口中名字相同的方法,无法做到同时实现。

2、何时使用:

该类不允许或不需要其他类进行访问时。



0 0