`

Java 面向对象基础 供大家学习

阅读更多

1.面向对象编程介绍
1.        万事万物皆对象。
2.        使用面向对象编程的思想是将现实世界中的该事物用编程语言描叙出来,在这个过程中必须保持和现实世界中该事物一致。
3.        设计面向对象编程:
1)       从问题中抽取对象,思考对象之间的关系;
2)       用类来描叙对象;
3)       为类添加属性;
4)       为类添加方法;
5)       为类添加他们之间的关系;
6)       使用java语言来创建对象来完成业务操作;
7)       具体-----抽象----具体。
2.类以及类相关的基本概念
2.1类的定义
1.        类:是对现实世界中相同事物的描叙、一个相同集合、是一个抽象的。
2.        类的格式:
[<修饰符>]  class <类名称>{
//属性
//方法
//构造方法
//嵌套类
}
3.        修饰符的作用就是一个权限管理
4.        属性用于存储类的数据
5.        方法用于完成类的行为、功能、操作属性
6.        构造方法用于创建对象,没有构造方法是不能创建对象
7.        属性和方法是类的成员,成员变量,成员方法
2.2方法
1.        方法格式:
[<修饰符>] <返回值的类型>|void <方法名称>([<参数列表>]){
//方法体
return [<返回值>];
}
2.        返回值的类型一定要和返回的值类型相同。
3.        return给调用者返回值,或者是结束方法。void什么都不返回,但是在编译成字节码的时候会默认加上一个返回空的return,该方法的作用就是结束方法。如果方法有返回值类型,这个时候return的作用是返回值,并结束方法。
4.        返回值的类型:有8种基本数据类型和引用数据类型(定义了一个类就是定义了一个新的数据类型,该类型是含有逻辑结构的数据类型)。
5.        参数列表接受调用者传入的数据,又称为形式参数。
6.        实参:调用环境传入的实际的值,必须和形式参数保持一致。
2.3属性
1.        类的内部,方法的外部定义的属性称为全局变量,为该类服务。
2.        方法内部定义的属性成为局部变量,为该方法服务。
3.        可以使用引用,调用全局变量
4.        全局变量可以加修饰符,局部变量不可以加修饰符,因为局部变量只为方法服务。
5.        全局变量:[<修饰符>] <数据类型> <变量名称> [<=值>];
6.        局部变量:<数据类型> <变量名称> <=值>;局部变量在使用前一定要有初始值。
7.        全局变量的生存周期是和对象相同,局部变量的生存周期是调用完毕马上消失。
2.4对象的定义
1.        对象是类的具体表现,类是对象的模板。
2.        一个类可以有多个对象,相互之间是不会受到干涉的,因为地址不同。
3.        类 引用变量=new构造方法;//类和构造方法的名称相同
4.        类 引用变量=(类)class.forName(…).NewInstance();
2.5构造方法
1.        用于创建对象和初始化。
2.        构造方法的名称和类名称要保持一致。
3.        构造方法不返回任何值。
4.        如果我们在定义类的时候没有显示地定义构造方法,系统会创建一个默认的无参构造方法;一旦显示地定义了构造方法,系统就不再提供默认的无参构造方法,如果要想使用无参构造放,就要重载构造方法,定义一个无参的构造方法
5.        new用于创建对象,分配内存空间,参数地址,构造方法是通过new关键字自动调用。
6.        [<修饰符>] <构造方法的名称>([<参数列表>]){
//构造方法体
}
7.        一个类中有多个构造方法,只要参数列表不相同(数据类型、个数、位置)就可以。
2.6封装
在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
3.内存分析
1.        对引用变量进行初始化赋值,分配栈空间,这时的引用变量的值为null
2.        new分配堆空间,看类中有多少个属性,就将堆分成多少个小格,进行属性的默认初始化,如果属性存在显示初始化,就会将默认的值替换,如果还存在构造方法为属性赋值,就会再将属性已有的值替换(默认赋值、显示赋值、构造方法赋值),完成所有的赋值操作后,就会将new出的内存地址赋值给引用变量。
3.        深入内存分析:os为jvm分配内存空间,再由jvm来管理这块内存空间。jvm将管理的内存空间分为栈、堆、静态区、代码区。
1)       栈 存储的是局部变量。
2)       堆 存储的是new出来的空间。
3)       静态区 存储的是存储的是字符串常量和静态属性。
4)       代码区 存储的就是代码。
4.包
在大型项目中使用不同的类来封装不同的业务,但是在封装的过程中所有的类可以分为几大类型(视图类型、控制类型、数据业务类型、vo类型、工具类型),我们就是使用包结构来管理不同的类型的类。
1.        包只能在源文件的第一行(注释除外)。
2.        包定义的格式:package包名称1.包名称2….
3.        使用包管理后的类的类名就为:包名+类名
4.        使用包管理的类:import包的路径.类名
5.        在同一个类中使用不同的包管理的相同名称的类的时候,只能使用import导入一个,另外的一个使用方法就要在该类的前面明确添加上包的路径。
6.        有包管理的代码(类)不可以调用无包管理的代码(类),但是无包管理的可以调用有包管理的,只要在调用的时候导入包就可以。
5.继承
5.1继承介绍
一个项目要实现代码重用、灵活性、可扩展、便于维护(保证现有项目的正常运行、以及对原有项目的新的功能点的增加)。继承就是实现代码重用的方式之一。
将功能业务相同的类的相同业务和数据抽取为一个新的类,该类就是父子,这样的方式就是继承,子类可以从父类继承相同业务的行为,同时还可以有自己的行为。
如果类之间不存在继承关系,千万不要随意使用继承,这个时候就可以使用组合的方式来完成。组合:A类拥有B类中的某些特性,而A类和B类又没有继承关系,那么这个时候我们就可以使用组合的方式来完成功能和实现代码重用,在A类中创建B类的对象,再通过B类创建的变量调用B类中的特性。使用组合比使用继承多,更多的情况下我们使用的是组合,因为如果修改了父类中的继承方法,有可能就会影响到子类的功能实现。
5.2继承的特性
在C++中是可以多继承,但是在JAVA中只可以单一继承,因为一个子类继承多个父类时,如果多个父类中有相同名称的方法,但是方法内部实现不相同的话,就有可能使子类在业务上混乱。
在java中可以有多层继承,因为多继承,使用类的数据类型的多样性就有多个,这样可以让我们在调用方法的时候更加灵活。
Object类是所以类的顶级父类,是为了系统提供API的时候实现代码重用,所以在使用系统提供这些API方法中接受的参数大部分都为Object类型。
子类从父类中继承除私有的以外的所有特性。
子类不能继承父类中的构造方法,因为每一个类的构造方法,只能用于创建本类的对象,初始化本类属性和业务。但是在子类的构造方法中,会默认地调用父类的无参构造方法。如果父类中不存在无参构造方法,则可以通过两种途径解决:为父类添加无参构造构造方法,另一种就是在子类中,显示地调用父类里面的构造方法。(推荐使用)
5.3方法重载
当一个类中的多个方法业务相同,只是根据不同的参数指向细微的不同业务的是就是要方法重载
1.        方法名相同;
2.        方法的参数类型、个数、顺序至少一项不同;
3.        方法的返回类型、修饰符可以不同
5.4方法重写(覆盖)
当子类从父类继承过来的方法,不能满足子类的要求的时候,就在子类中显示地重新定义该方法,增加新的特性,完成新的功能。
1.        子类方法的名称、参数、返回类型必须与父类相同;
2.        子类方法不能缩小父类方法的访问权限;
3.        子类方法不能抛出比父类方法更多的异常;
4.        父类的静态方法不能被子类覆盖为非静态方法;
5.        父类的非静态方法不能被子类覆盖为静态方法;
6.        子类可以定义与父类的静态方法相同的静态方法;
7.        父类的私有方法不能被子类继承,也就不能被覆盖;
8.        父类的抽象方法,子类可以:实现抽象方法;继续重新声明父类的抽象方法;
9.        父类的非抽象方法,可以被覆盖为抽象方法。
5.5this
this代表本类对象、this接收的就是对象的地址,因为一个类可以有多个对象,类是为该类的所有对象共享,使用this接收到对象地址来区分到底是那个对象正在调用代码运行
在一个类中有3个地方存在this:类的内部方法的外部、构造方法内部、方法内部(非静态方法内部)
this特性:
1)       类的内部方法中调用属性和方法的时候都会隐含的有一个this。
2)       this调用变量表明该变量是那个对象的,this调用方法表示该方法正在被那个对象调用。
3)       当全局变量和局部变量同名的时候使用this来区分全局变量和局部变量
4)       类的内部方法的外部、构造方法内部this是创建对象是的地址,而方法中的this只有在被调用时才占用内存
5)       可以使用this(值)来调用重载的构造方法,this调用重载的构造方法只能在构造方法的第一行
5.6super
super代表的就是父类,但是接收的内存地址为子类创建的对象的地址。在创建子类对象的时候,会通过super调用父类的构造方法创建父类对象,便于子类继承,再创建子类的对象,将子类对象赋值给父类创建的内存地址。
Super调用构造方法必须放置在子类构造方法的第一行,又因为在子类构造方法中使用this调用重载的构造方法,该this也必须是在构造方法的第一行,使用super和this调用构造方法不能一起使用。
使用this在子类中调用重载的构造方法后,super调用父类构造方法的方式就要向this调用的构造方法中移动。

1.面向对象编程介绍
1.        万事万物皆对象。
2.        使用面向对象编程的思想是将现实世界中的该事物用编程语言描叙出来,在这个过程中必须保持和现实世界中该事物一致。
3.        设计面向对象编程:
1)       从问题中抽取对象,思考对象之间的关系;
2)       用类来描叙对象;
3)       为类添加属性;
4)       为类添加方法;
5)       为类添加他们之间的关系;
6)       使用java语言来创建对象来完成业务操作;
7)       具体-----抽象----具体。
2.类以及类相关的基本概念
2.1类的定义
1.        类:是对现实世界中相同事物的描叙、一个相同集合、是一个抽象的。
2.        类的格式:
[<修饰符>]  class <类名称>{
//属性
//方法
//构造方法
//嵌套类
}
3.        修饰符的作用就是一个权限管理
4.        属性用于存储类的数据
5.        方法用于完成类的行为、功能、操作属性
6.        构造方法用于创建对象,没有构造方法是不能创建对象
7.        属性和方法是类的成员,成员变量,成员方法
2.2方法
1.        方法格式:
[<修饰符>] <返回值的类型>|void <方法名称>([<参数列表>]){
//方法体
return [<返回值>];
}
2.        返回值的类型一定要和返回的值类型相同。
3.        return给调用者返回值,或者是结束方法。void什么都不返回,但是在编译成字节码的时候会默认加上一个返回空的return,该方法的作用就是结束方法。如果方法有返回值类型,这个时候return的作用是返回值,并结束方法。
4.        返回值的类型:有8种基本数据类型和引用数据类型(定义了一个类就是定义了一个新的数据类型,该类型是含有逻辑结构的数据类型)。
5.        参数列表接受调用者传入的数据,又称为形式参数。
6.        实参:调用环境传入的实际的值,必须和形式参数保持一致。
2.3属性
1.        类的内部,方法的外部定义的属性称为全局变量,为该类服务。
2.        方法内部定义的属性成为局部变量,为该方法服务。
3.        可以使用引用,调用全局变量
4.        全局变量可以加修饰符,局部变量不可以加修饰符,因为局部变量只为方法服务。
5.        全局变量:[<修饰符>] <数据类型> <变量名称> [<=值>];
6.        局部变量:<数据类型> <变量名称> <=值>;局部变量在使用前一定要有初始值。
7.        全局变量的生存周期是和对象相同,局部变量的生存周期是调用完毕马上消失。
2.4对象的定义
1.        对象是类的具体表现,类是对象的模板。
2.        一个类可以有多个对象,相互之间是不会受到干涉的,因为地址不同。
3.        类 引用变量=new构造方法;//类和构造方法的名称相同
4.        类 引用变量=(类)class.forName(…).NewInstance();
2.5构造方法
1.        用于创建对象和初始化。
2.        构造方法的名称和类名称要保持一致。
3.        构造方法不返回任何值。
4.        如果我们在定义类的时候没有显示地定义构造方法,系统会创建一个默认的无参构造方法;一旦显示地定义了构造方法,系统就不再提供默认的无参构造方法,如果要想使用无参构造放,就要重载构造方法,定义一个无参的构造方法
5.        new用于创建对象,分配内存空间,参数地址,构造方法是通过new关键字自动调用。
6.        [<修饰符>] <构造方法的名称>([<参数列表>]){
//构造方法体
}
7.        一个类中有多个构造方法,只要参数列表不相同(数据类型、个数、位置)就可以。
2.6封装
在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
3.内存分析
1.        对引用变量进行初始化赋值,分配栈空间,这时的引用变量的值为null
2.        new分配堆空间,看类中有多少个属性,就将堆分成多少个小格,进行属性的默认初始化,如果属性存在显示初始化,就会将默认的值替换,如果还存在构造方法为属性赋值,就会再将属性已有的值替换(默认赋值、显示赋值、构造方法赋值),完成所有的赋值操作后,就会将new出的内存地址赋值给引用变量。
3.        深入内存分析:os为jvm分配内存空间,再由jvm来管理这块内存空间。jvm将管理的内存空间分为栈、堆、静态区、代码区。
1)       栈 存储的是局部变量。
2)       堆 存储的是new出来的空间。
3)       静态区 存储的是存储的是字符串常量和静态属性。
4)       代码区 存储的就是代码。
4.包
在大型项目中使用不同的类来封装不同的业务,但是在封装的过程中所有的类可以分为几大类型(视图类型、控制类型、数据业务类型、vo类型、工具类型),我们就是使用包结构来管理不同的类型的类。
1.        包只能在源文件的第一行(注释除外)。
2.        包定义的格式:package包名称1.包名称2….
3.        使用包管理后的类的类名就为:包名+类名
4.        使用包管理的类:import包的路径.类名
5.        在同一个类中使用不同的包管理的相同名称的类的时候,只能使用import导入一个,另外的一个使用方法就要在该类的前面明确添加上包的路径。
6.        有包管理的代码(类)不可以调用无包管理的代码(类),但是无包管理的可以调用有包管理的,只要在调用的时候导入包就可以。
5.继承
5.1继承介绍
一个项目要实现代码重用、灵活性、可扩展、便于维护(保证现有项目的正常运行、以及对原有项目的新的功能点的增加)。继承就是实现代码重用的方式之一。
将功能业务相同的类的相同业务和数据抽取为一个新的类,该类就是父子,这样的方式就是继承,子类可以从父类继承相同业务的行为,同时还可以有自己的行为。
如果类之间不存在继承关系,千万不要随意使用继承,这个时候就可以使用组合的方式来完成。组合:A类拥有B类中的某些特性,而A类和B类又没有继承关系,那么这个时候我们就可以使用组合的方式来完成功能和实现代码重用,在A类中创建B类的对象,再通过B类创建的变量调用B类中的特性。使用组合比使用继承多,更多的情况下我们使用的是组合,因为如果修改了父类中的继承方法,有可能就会影响到子类的功能实现。
5.2继承的特性
在C++中是可以多继承,但是在JAVA中只可以单一继承,因为一个子类继承多个父类时,如果多个父类中有相同名称的方法,但是方法内部实现不相同的话,就有可能使子类在业务上混乱。
在java中可以有多层继承,因为多继承,使用类的数据类型的多样性就有多个,这样可以让我们在调用方法的时候更加灵活。
Object类是所以类的顶级父类,是为了系统提供API的时候实现代码重用,所以在使用系统提供这些API方法中接受的参数大部分都为Object类型。
子类从父类中继承除私有的以外的所有特性。
子类不能继承父类中的构造方法,因为每一个类的构造方法,只能用于创建本类的对象,初始化本类属性和业务。但是在子类的构造方法中,会默认地调用父类的无参构造方法。如果父类中不存在无参构造方法,则可以通过两种途径解决:为父类添加无参构造构造方法,另一种就是在子类中,显示地调用父类里面的构造方法。(推荐使用)
5.3方法重载
当一个类中的多个方法业务相同,只是根据不同的参数指向细微的不同业务的是就是要方法重载
1.        方法名相同;
2.        方法的参数类型、个数、顺序至少一项不同;
3.        方法的返回类型、修饰符可以不同
5.4方法重写(覆盖)
当子类从父类继承过来的方法,不能满足子类的要求的时候,就在子类中显示地重新定义该方法,增加新的特性,完成新的功能。
1.        子类方法的名称、参数、返回类型必须与父类相同;
2.        子类方法不能缩小父类方法的访问权限;
3.        子类方法不能抛出比父类方法更多的异常;
4.        父类的静态方法不能被子类覆盖为非静态方法;
5.        父类的非静态方法不能被子类覆盖为静态方法;
6.        子类可以定义与父类的静态方法相同的静态方法;
7.        父类的私有方法不能被子类继承,也就不能被覆盖;
8.        父类的抽象方法,子类可以:实现抽象方法;继续重新声明父类的抽象方法;
9.        父类的非抽象方法,可以被覆盖为抽象方法。
5.5this
this代表本类对象、this接收的就是对象的地址,因为一个类可以有多个对象,类是为该类的所有对象共享,使用this接收到对象地址来区分到底是那个对象正在调用代码运行
在一个类中有3个地方存在this:类的内部方法的外部、构造方法内部、方法内部(非静态方法内部)
this特性:
1)       类的内部方法中调用属性和方法的时候都会隐含的有一个this。
2)       this调用变量表明该变量是那个对象的,this调用方法表示该方法正在被那个对象调用。
3)       当全局变量和局部变量同名的时候使用this来区分全局变量和局部变量
4)       类的内部方法的外部、构造方法内部this是创建对象是的地址,而方法中的this只有在被调用时才占用内存
5)       可以使用this(值)来调用重载的构造方法,this调用重载的构造方法只能在构造方法的第一行
5.6super
super代表的就是父类,但是接收的内存地址为子类创建的对象的地址。在创建子类对象的时候,会通过super调用父类的构造方法创建父类对象,便于子类继承,再创建子类的对象,将子类对象赋值给父类创建的内存地址。
Super调用构造方法必须放置在子类构造方法的第一行,又因为在子类构造方法中使用this调用重载的构造方法,该this也必须是在构造方法的第一行,使用super和this调用构造方法不能一起使用。
使用this在子类中调用重载的构造方法后,super调用父类构造方法的方式就要向this调用的构造方法中移动。
分享到:
评论

相关推荐

    JAVA面向对象可以供学生 学习

    通过学习这些Java面向对象编程的核心概念,学生不仅可以掌握编程基础,还能进一步探索更复杂的软件设计模式和技术,如工厂模式、单例模式、观察者模式等。在实际项目中,理解和运用这些知识将有助于构建高效、可维护...

    java面向对象基础、高级pdf讲义

    Java面向对象基础与高级知识点详解 Java是一种广泛使用的面向对象编程语言,它的设计哲学是“一切皆对象”。本讲义将全面深入地介绍Java面向对象的基础概念和高级特性,帮助开发者从初学者到精通者逐步提升技能。 ...

    Java面向对象程序设计教程PDF,完整的面向对象编程指南,大量习题便于自学。

    Java面向对象程序设计是Java语言的核心特性之一,也是学习Java编程不可或缺的部分。本教程全面深入地探讨了这一主题,旨在...通过逐步学习和解决这些习题,你可以掌握Java面向对象编程的精髓,为实际开发打下坚实基础。

    JAVA面向对象基础教程 学习JAVA编程思想的很好的

    《JAVA面向对象基础教程》是一本深入浅出的JAVA编程思想学习资源,适合初学者快速入门,也适合有经验的开发者进一步深化对JAVA面向对象编程的理解。本教程全面覆盖了JAVA语言的核心概念,旨在帮助读者掌握JAVA编程的...

    java-数组与方法及面向对象基础

    本教程将深入探讨Java中的数组、方法以及面向对象编程的基础概念,为初学者提供一个全面的学习指南。 一、数组 数组在Java中是存储同一类型数据的集合,可以看作是一个可变大小的容器。数组的定义和初始化通常包含...

    Java面向对象程序设计(源代码)

    《Java面向对象程序设计(源代码)》是清华大学...总的来说,《Java面向对象程序设计(源代码)》是一本全面介绍Java面向对象编程的教材,适合初学者和有一定基础的开发者阅读,通过理论与实践的结合,提升Java编程能力。

    java面向对象DVD管理系统

    《Java面向对象DVD管理系统》是一套综合性的软件应用,它以Java编程语言为基础,采用面向对象的设计理念,实现了包括查询、租借等在内的多种功能,旨在有效地管理DVD资源。在这个系统中,我们可以深入探讨以下几个...

    Java面向对象编程基础PPT学习教案.pptx

    Java面向对象编程基础 面向对象编程(Object-Oriented Programming,OOP)是现代软件开发中广泛采用的一种编程范式,它的核心理念是将现实世界中的事物抽象为计算机中的对象,通过这些对象之间的交互实现软件的功能...

    java学习指导及面向对象基础知识整理

    总结来说,Java学习指导和面向对象基础知识的整理,为初学者提供了一个清晰的学习路线图,强调了掌握原理、学习语言基础、面向对象思维、API使用和实战编程的重要性。通过系统学习这些知识点,学习者可以逐渐成长为...

    Java面向对象程序设计---课件PPT.zip

    以上是Java面向对象编程的基础知识,通过深入理解和熟练运用这些概念,开发者可以编写出高效、可维护的Java应用程序。课件PPT可能涵盖了这些主题的详细讲解,包括实例演示和练习,对于初学者来说是一份宝贵的资源。...

    JAVA面向对象程序设计实训教程

    《JAVA面向对象程序设计实训教程》是一本深入浅出、旨在帮助学习者理解和掌握JAVA面向对象编程技术的实践性教材。面向对象编程是JAVA语言的核心特性,它将复杂的程序设计问题分解为一系列可复用的对象,提高了代码的...

    Java面向对象

    在学习Java面向对象时,理解并熟练运用这些概念是至关重要的。通过编写实例代码,你可以更好地理解和掌握这些概念,从而提高编程能力。例如,你可以创建一个简单的类,然后定义它的属性和方法,实现构造器,再通过...

    Java面向对象流程图

    Java面向对象是编程领域中的一个核心概念,它是一种...以上知识点涵盖了Java面向对象的核心概念,理解和掌握它们对于深入学习Java编程至关重要。通过不断的实践和应用,可以提升编程能力和写出更加高效、健壮的代码。

    Java面向对象设计

    这句话虽然简短,但透露出分享者对“Java面向对象设计”这一主题的重视与热忱,以及希望通过分享促进大家共同学习、交流的愿望。 在IT行业中,Java是一种广泛使用的编程语言,而面向对象设计(Object-Oriented ...

    Java面向对象(高级).pptx

    Java SE基础详细的PPT教程,供Java 基础学习者或者Java 基础授课使用

    java(面向对象编程)课件

    通过学习这个“java(面向对象编程)课件”,你将掌握Java面向对象编程的基本概念和实践技巧,为后续的Java开发打下坚实的基础。记得深入理解和实践每个知识点,结合实际项目进行操练,以便更好地消化和掌握这些内容。...

    完整版Java全套入门培训课件 Java基础 03-面向对象(共18页).pptx

    面向对象是Java编程的核心概念,它相对于面向过程编程而言,更注重对象的使用而非单一的步骤执行。面向对象思想强调将功能封装进对象,使得程序员能够像指挥者一样操作对象,而不是作为执行者参与每一步计算。面向...

    孙卫琴《Java面向对象编程》ppt 和源代码

    《Java面向对象编程》是Java学习的经典教材,由知名讲师孙卫琴编著。这份资料包含PPT演示文稿和配套的源代码,旨在帮助学习者深入理解和掌握Java的面向对象编程思想。以下是对其中主要知识点的详细阐述: 1. **面向...

Global site tag (gtag.js) - Google Analytics