java_面向对象

来源:互联网 发布:ladybug mac 编辑:程序博客网 时间:2024/06/05 02:42

类和对象:

类可以看成一类对象的模板,对象可以看成该类的一个具体实例。

Java的数据类型:

基本数据类型:

整数:byteshortintlong  字节数:1 2 4 8

浮点型:floatdouble  字节数:4 8

字符型:char字节数:2

boolean 型:boolean 1byte

引用数据类型:数组、类、接口

数据类型强制转换:int a = Integer.parseInt(str);//字符串类型转换int类型

变量的命名规则:

变量中只能出现字母、数字、下划线、$符号

首字母不能使数字

几个单词拼接起来的变量名,第一个单词首字母小写,其余单词首字母大写(studentNameuserAge

成员变量

方法外部,类的内部定义的变量, 成员变量的作用范围为整个类体.

成员变量可以使Java语言中任何一种数据类型(包括基本类型和引用类型)

在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认值对其初始化.

局部变量:定义在方法之中的变量。局部变量要先赋值,再进行运算,而成员变量均已经赋初值。这是局部变量和成员变量的一大区别。

面向对象三大特征:

封装:使用private关键字将类的属性和方法私有化,通过settergetter方法取得。

继承:子类继承父类的所有非私有操作,一个子类只能继承一个父类,可以多层继承。子类继承父类的所有非私有操作,私有属性通过settergetter方法访问。

多态:两种表现形式:1、方法重载与覆写 2、对象多态性必须使用new关键字创建对象

多态的前提

n       必须是类与类之间有关系。要么继承,要么实现。

n       通常还有一个前提:存在覆盖。

多态的好处

n       多态的出现大大的提高程序的扩展性。

多态的弊端:

n       提高了扩展性,但是只能使用父类的引用访问父类中的成员。

n         如何要访问子类特有对象必须强制转换为子类对象。

构造方法:方法名与类名相同,无返回类型。主要作用就是将类的属性初始化,只能使用一次,在实例化类的时候,就会调用类中的构造方法。

方法的重载:方法名相同,参数类型或个数不同,与返回值无关。

方法的覆写:子类拥有跟父类方法名相同、参数类型和个数也相同的方法。被覆写的方法不能拥有更严格的访问权限

匿名对象:没有名字的对象。new Person();

 

对象的创建和使用

必须使用new关键字创建对象

使用对象.成员变量来引用对象的成员变量

使用对象.方法(参数列表)来调用对象的方法

同一类的每个对象有不同的成员变量存储空间

同一类的每个对象共享该类的方法

构造函数:函数名与类名一致,不用返回值类型,不可以用return主要用来初始化对象。对象一建立,就默认调用其构造函数。一个对象一建立,就有其默认的属性和行为。构造函数只在对象建立时运行一次,不再运行而普通函数可以调用多次,

this关键字

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

当前使用方法的对象是this

有时使用this可以处理方法中成员变量和参数重名的情况。

this可以看作是一个变量,它的值是当前对象的引用

使用格式:

   this.成员变量名;

   this.成员方法名

    this();

static 关键字

三种修饰:修饰类的变量、方法和构造代码块。静态方法只能直接引用和访问静态变量和方法,static的方法可以调用static类型的属性和方法。

声明为static的方法称为静态方法或类方法。静态方法可以直接调用静态方法,访问静态变量,但是不能直接访问实例变量和实例方法。静态方法中不能使用this关键字,因为静态方法不属于任何一个实例。静态方法不能被子类的静态方法覆盖。

特有属性随着对象存储于堆内存中,而static修饰后的属性,存在于方法区.

可以通过对象引用或类名(不需要事例化)访问静态成员。

final关键字

final的变量的值不能被改变

final的方法不能被重写

final的类不能被继承

内部类:在类的内部再定义另外一个类

缺点:一个类的结构应该只包含属性和方法,所以内部类打破了类的格式。

外部类调用内部类的方法格式:

class Outer{

private String info = "Hello World!!!" ;

public void fun(){       

new Inner(this).print() ; //将当前对象传递到Inner类中

}

class Inner{ // 内部类

private Outer out = null ;

public Inner(Outer out){

this.out = out ;

}

public voidprint(){

System.out.println(out.getInfo()) ;

}};

};

内部类调用外部类的方法:

class Outer{

private String info = "Hello World!!!" ;

public void fun(){       

System.out.println(out.getInfo()) ;

}

class Inner{ // 内部类

private Outer out = null ;

public Inner(Outer out){

this.out = out ;

}

public voidprint(){

new Outer().fun();

}};

};

在其他类调用内部类的格式:

Outer out = newOuter();

Outer.Inner in =new out.new Inner();

或者:Outer.Inner in =new Outer.Inner();

In.print();

抽象类

n     用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。

n     含有抽象方法的类必须被声明为抽象类i,抽象类必须被继承,抽象方法必须被重写。

n     抽象类不能被实例化。

n     抽象方法只须声明,而不需实现。

接口     

n     接口(interface)是抽象方法和常量值的定义集合

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

接口的特性

n     多个无关的类可以实现同一个接口

n     一个类实现多个无关的接口。

n     接口中声明属性默认为public static final;也只能是public static final的。

n     接口中只能定义抽象方法,而且这些方法默认为public的,也只能是public

n     接口可以继承其它接口,并添加新的属性和抽象方法。

n      接口可以被类多实现,也是对多继承不支持的转换形式。java支持多实现。

n      1,类可以实现多个接口,用关健字:implements如:

n      classTestimplements JieKou,JieKou2

n      2,类继承后,仍可以实现多个接口,如:

n      classTestextends Demo implements JieKou,JieKou2

n      3,接口在可以实现多继承,如:

n      interfaceTestextends A,B

 

抽象类与接口特征

No.

区别点

抽象类

接口

1

定义

包含一个抽象方法的类

抽象方法和全局常量的集合

2

组成

构造方法、抽象方法、普通方法、常量、变量

常量、抽象方法

3

使用

子类继承抽象类(extends

子类实现接口(implements

4

关系

抽象类可以实现多个接口

接口不能继承抽象类,但允许继承多个接口

5

常见设计模式

模板设计

工厂设计、代理设计

6

对象

都通过对象的多态性产生实例化对象

7

局限

抽象类有单继承的局限

接口没有此局限

8

实际

作为一个模板

是作为一个标准或是表示一种能力

9

选择

如果抽象类和接口都可以使用的话,优先使用接口,因为避免单继承的局限

10

特殊

一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类

 

 

原创粉丝点击