java_面向对象
来源:互联网 发布:ladybug mac 编辑:程序博客网 时间:2024/06/05 02:42
类和对象:
类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
Java的数据类型:
基本数据类型:
整数:byte、short、int、long 字节数:1 2 4 8
浮点型:float、double 字节数:4 8
字符型:char字节数:2
boolean 型:boolean 1byte
引用数据类型:数组、类、接口
数据类型强制转换:int a = Integer.parseInt(str);//字符串类型转换int类型
变量的命名规则:
变量中只能出现字母、数字、下划线、$符号
首字母不能使数字
几个单词拼接起来的变量名,第一个单词首字母小写,其余单词首字母大写(studentName、userAge)
成员变量
方法外部,类的内部定义的变量, 成员变量的作用范围为整个类体.
成员变量可以使Java语言中任何一种数据类型(包括基本类型和引用类型).
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认值对其初始化.
局部变量:定义在方法之中的变量。局部变量要先赋值,再进行运算,而成员变量均已经赋初值。这是局部变量和成员变量的一大区别。
面向对象三大特征:
封装:使用private关键字将类的属性和方法私有化,通过setter和getter方法取得。
继承:子类继承父类的所有非私有操作,一个子类只能继承一个父类,可以多层继承。子类继承父类的所有非私有操作,私有属性通过setter和getter方法访问。
多态:两种表现形式: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
特殊
一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类
- java_面向对象
- java_面向对象
- java_面向对象
- JAVA_面向对象1
- JAVA_面向对象2
- Java_面向对象(1)
- 笔记6:java_面向对象
- JAVA_面向对象高级特性
- Java_面向对象_类
- JAVA_面向对象_笔记_01
- Java_面向对象笔记总结(一)
- Java_面向对象(1)_续
- Java_面向对象相关(总览及突破)
- JAVA_基础之面向对象的概念
- 一起学Java_面向对象(1)
- 一起学Java_面向对象(2)
- 一起学Java_面向对象(3)
- 一起学Java_面向对象(4)
- 减少接口表的数量是否能有效提高集成性能?
- java执行出现NoClassDefFoundError
- java_常用类库
- CArchive、CObject::Serialize、CFile之间的简单关系
- JVM学习笔记-对象标记算法
- java_面向对象
- 译: Code::Blocks手册 使用篇
- Python入门
- spring+hibernate的配置文件示例
- Git详解之一 Git起步
- linux中head命令简析
- Samba,Fedora10
- Android消息提示框Toast
- 搭建嵌入式Qt开发环境