华清远见-重庆中心-JAVA面向对象阶段技术总结

系列文章目录


第一章 华清远见--重庆中心-JAVA基础阶段技术总结

第二章 华清远见-重庆中心-JAVA面向对象阶段技术总结

系列文章目录

第一章 华清远见--重庆中心-JAVA基础阶段技术总结

第二章 华清远见-重庆中心-JAVA面向对象阶段技术总结

文章目录

前言

一、面向对象编程&面向过程编程

对象的概念

二、面向对象的三大核心特性

1.继承性

2.封装性

3.多态性

一、类,对象,引用

1.1 类

定义类

创建类

1.2 对象

成员变量的初始化

成员变量的调用

成员方法的调用

1.3引用类型

二、java的继承 

向上造型

继承中的构造方法

三、java的重写和重载

重写(Override)

Super 关键字的使用

重载(Overload)

super和this的区别

关键字

1、null

2、instanceof关键字

3、package 关键字

4、import 关键字

5、return关键字 :java中方法的定义

6、static关键字

6.1修饰成员变量

6.2修饰成员方法

7、final关键字

3.1修饰类

3.2修饰方法

3.3修饰成员变量

8、接口interface 

总结


前言

本篇文章用于本人对于java学习的归纳和总结。


提示:以下是本篇文章正文内容,下面案例可供参考

一、面向对象编程&面向过程编程

  • Object Oriented Programming 简称OOP: c++ ,java , c#

  • Procedure Oriented Programming 简称POP: c语言

  • 面向过程,侧重于分析问题的步骤和具体细节,亲力亲为地去完成每一步都是基于上一步去完成

  • 面向对象,侧重于创建解决问题的实体,通过实体互相配合去完成每个实体解决问题的细节实质也是面向过程的

对象的概念

所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。

二、面向对象的三大核心特性

面向对象具有继承、封装和多态 3 个核心特性

1.继承性

  • 程序中的继承性是指子类拥有父类的全部特征和行为,这是类之间的一种关系。

  • A类通过extends关键字,继承B类,Java是中是单继承,一个子类只能有一个父类,一个父类可以有多个子类

  • 继承能够提高代码的重用性

  • Java是中是单继承,一个子类只能有一个父类,一个父类可以有多个子类

2.封装性

  • 封装的目的在于保护信息。

  • Java 语言的基本封装单位是类。

  • 通过private关键字对成员变量进行修饰,提供公开的getter和setter方法用于简单地对成员变量进行取值和赋值。

  • Java 提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西,私有的方法数据只能通过该类的成员代码来访问。

3.多态性

  • 多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。

  • 父类的引用指向子类的对象

    Father s=new Son();

  • 多态性允许一个接口被多个同类使用


一、类,对象,引用

  • 类是对象的抽象,对象是类的具体。

    类是概念模型,定义对象的所有特性和所需的操作,对象是真实的模型,是一个具体的实体。

  • 是描述了一组有相同特性(属性)和相同行为(方法)的一组对象的集合。

    1. 对象或实体所拥有的特征在类中表示时称为类的属性

    2. 对象执行的操作称为类的方法

1.1 类

  • 类是具有相同属性和行为的对象的集合。

  • 类定义了该类型对象的数据结构, 称之为“成员变量”,同时也定义了一些可以被调用的功能,称之为“方法”。

  • 类是用于构建对象的模板,对象的实质就是内存中的一块存储区域,其数据结构由定义它的类来决定。

定义类

在 Java 中定义一个类,需要使用 class 关键字、一个自定义的类名和一对表示程序体的大括号。

[public] [abstract|final] class <class_name>[extends<class_name>] [implements<interface_name>] {
    // 定义属性部分
    <property_type><property1>;
    <property_type><property2>;
    <property_type><property3>;
    …
    // 定义方法部分
    function1();
    function2();
    function3();
    …
}
  • public:如果使用 public 修饰,则可以被其他类和程序访问。每个 Java 程序的主类都必须是 public 类,作为公共工具供其他类和程序使用的类应定义为 public 类。

  • abstract:如果类被 abstract 修饰,则该类为抽象类,抽象类不能被实例化,但抽象类中可以有抽象方法(使用 abstract 修饰的方法)和具体方法(没有使用 abstract 修饰的方法)。继承该抽象类的所有子类都必须实现该抽象类中的所有抽象方法(除非子类也是抽象类)。

  • final:如果类被 final 修饰,则不允许被继承。

  • class:声明类的关键字。

  • class_name:类的名称。

  • extends:表示继承其他类。

  • implements:表示实现某些接口。

  • property_type:表示成员变量的类型。

  • property:表示成员变量名称。

  • function():表示成员方法名称。

创建类

创建一个新的类,就是创建一个新的数据类型。实例化一个类,就是得到类的一个对象。

  • 成员变量通过在类的主体中定义变量来描述类所具有的特征(属性)表明对象的状态和属性

  • 方法表明对象所具有的行为

1.2 对象

  • 当一个类的定义存在后, 可以使用 new 运算符创建该类的对象。

  • 对象创建的过程一般称为类的实例化

语法规则:

成员变量的初始化

成员变量的默认初始化值规则

声明成员变量的语法如下:

[public|protected|private] [static] [final] <type><variable_name>

各参数的含义如下。

  • public、protected、private:用于表示成员变量的访问权限。

  • static:表示该成员变量为类变量,也称为静态变量。

  • final:表示将该成员变量声明为常量,其值无法更改。

  • type:表示变量的类型。

  • variable_name:表示变量名称。

对象创建之后,其成员变量可以按照默认的方式初始化,对象成员具有默认值。

成员变量的调用

成员变量的调用,可以根据某个对象的引用,找到成员变量,然后使用成员变量。
// 1. 创建一个汽车
Car car = new Car() ; // 创建的对象,赋值给引用类型的变量。
// 2. 给汽车的属性赋值
car.pinPai = "BYD宋";
car.color = "红色";
car.faDongJi = "byd发动机";
car.count = 7 ;

成员方法的调用

方法的调用必须通过某个对象的引用。
当通过么对象的引用调用方法时,方法中涉及的成员变量就是该对象的成员变量。
Person p1 = new Person();
 p1.eat("火锅");
 p1.sayHello();
 p1.driver();

1.3引用类型

  • 8种基本数据类型之前,用类名(接口,数组)声明的变量称为引用类型变量,简称引用。
  • 引用类型变量中存储的是某个对象在内存中的地址信息。
  • 引用的功能在于访问对象。
  • 引用类型变量声明语法规则:

二、java的继承 

  • 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的
  • extends关键字可以实现类的继承
  • 子类(sub class) 可以继承父类(super class)的成员变量及成员方法。同时也可以定义自己的成员变量和成员方法。
  • java语言不支持多继承,一个类只能继承一个父类。 但一个父类可以有多个子类。

向上造型

  • 一个子类的对象可以向上造型为父类的类型    Father f = new Sun();
  • java编译器编译的时候根据父类型检查调用的成员变量和成员方法是否匹配。
// 3. 向上造型 : 子类对象,赋值给父类的引用
Animal dog = new Dog() ;//
dog.birth = new Date();
dog.color = "黄色";
dog.count = 4 ;
dog.sex = "女";
dog.sing("汪汪。。。。");
dog.eat("狗粮......");
dog.run();
// dog.seeDoor() ;// 编译错误: 在编译的时候, dog引用是按引用的类型Animal使
用。 Animal没有seeDoor的方法
// 在运行的时候, dog引用找到的是对象的实际类型Dog ,进行使
用,这个时候就有seeDoor方法。
// 如果一定要调用seeDoor() , 这里只能修改dog的引用类型为Dog. ,即: Dog dog
= new Dog();

继承中的构造方法

  • 子类的构造方法中必须通过super调用父类的构造方法。因为创建子类之前,必须先创建父类。
  • 子类的构造函数如果没有直接使用super调用父类构造方法,java编译器会自动的加入对父类无参构造函数的调用(那么要求父类必须有无参构造方法)。


三、java的重写和重载

重写(Override)

  • 子类从父类继承的方法,如果不能满足子类的需要,可以重写父类的方法。即方法名和参数列表和
  • 父类保持完全一致,方法的实现不同。
  • 子类重写父类的方法之后,子类对象优先调用自己的方法。
  • 子类重写父类的方法的时候,可以在重写的方法中,使用super关键字调用到父类的方法。
// 图形
public class Shape {
int x ;
int y ;
public double area(){ // 成员函数
System.out.println("Shape的area函数被调用");
return 0 ;
}
}
class Rect extends Shape{
double w ;
double h ;
方法重载之后,子类调用自己重写之后的方法
6.package 关键字
定义类的时候需要指定类的名称。但是如果仅仅将类名作为类的唯一标志,则会出现命名冲突的问
题。
在java中,是用package 来解决命名冲突的问题。因此定义类的时候,一般需要先给类指定一个包
名。
类的真实名字是: 包名 + 类名。
包名可以有层次结构,一个类可以有多层包名。
// 重写:方法签名(方法的修饰符 , 返回值类型, 方法名,参数等)和父类的方法完全一致。
public double area(){
System.out.println("Rect中的area函数被调用。");
return w * h ;
}
public double area(double w , double h ){
return w * h ;
}
}
方法重载之后,子类调用自己重写之后的方法

Super 关键字的使用

当需要在子类中调用父类的被重写方法时,要使用 super 关键字。

super( ) 必须是在子类构造方法的方法体的第一行。

重载(Overload)

  • 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
  • 每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
  • 最常用的地方就是构造器的重载。
  • 在一个类中,如果多个方法的方法名相同,参数列表不同时,这些方法称为重载的方法。同名不同参。重载用于在一个类中,某个方法在不同的条件下,执行不同的内容。

super和this的区别

this 指的是当前对象的引用,super 是当前对象的父对象的引用。

super 关键字的用法:

  • super.父类属性名:调用父类中的属性
  • super.父类方法名:调用父类中的方法
  • super():调用父类的无参构造方法
  • super(参数):调用父类的有参构造方法


如果构造方法的第一行代码不是 this() 和 super(),则系统会默认添加 super()。


this 关键字的用法:

  • this.属性名:表示当前对象的属性
  • this.方法名(参数):表示调用当前对象的方法


当局部变量和成员变量发生冲突时,使用this.进行区分。


关键字

1、null

  • 引用类型变量用于存放对象的地址,可以给引用类型赋值为null,表示不指向任何对象。
  • 如果某个引用类型变量为null的时候,不能访问对象,否则抛出空指针异常。

2、instanceof关键字

  • 对于一个父类的引用类型,可以指向该类的对象也可以指向其任意一个子类型的对象。
  • 通过instanceof 关键字判断引用指向的对象的实际类型。
  • 根据引用指向的实际类型,将引用强制转换为实际类型。
// 4. 创建Animal : 动物是动物 , 狗是动物 , 鸡是动物。
Animal a1 = new Animal() ;
Animal a2 = new Dog(); // Dog 和Chicken都是Animal的子类。
Animal a3 = new Chicken() ;
// 5. 类型转换 :
4.继承中的构造方法
子类的构造方法中必须通过super调用父类的构造方法。因为创建子类之前,必须先创建父类。
子类的构造函数如果没有直接使用super调用父类构造方法,java编译器会自动的加入对父类无参
构造函数的调用(那么要求父类必须有无参构造方法)。
// instanceof : 用于判断 引用 对应的对象是否为某种类型 , 是结果为true ,否
则结果为false.
// a2是动物 , 但是a2本质是狗。 a2不能转换为鸡这个类型。
if(a2 instanceof Dog){ // instanceof的运算结果是true或者false.
// a2 是 Dog , 那么就可以把a2转换为Dog ,然后赋值给Dog类型的引用.
Dog dog1 = (Dog) a2;
dog1.seeDoor(); // 类型转换之后,就可以调用到子类Dog的所有方法。
}
if(a3 instanceof Chicken){
Chicken chicken = (Chicken) a3;
chicken.fly();
}
Chicken chicken = (Chicken) a2; // 没有编译错误。 有运行错误:
ClassCastException - 类型转换错误。

3、package 关键字

  • 定义类的时候需要指定类的名称。但是如果仅仅将类名作为类的唯一标志,则会出现命名冲突的问题。
  • java中,是用package 来解决命名冲突的问题。因此定义类的时候,一般需要先给类指定一个包名。
  • 类的真实名字是: 包名 + 类名。
  • 包名可以有层次结构,一个类可以有多层包名。
  • 如果各个公司和组织的程序员都随意命名包,并不能很好的解决命名冲突问题。因此指定包名的时候建议使用:
             公司域名反写 + 项目名 + 项目模块名 + mvc 模式分层

4、import 关键字

  • 如果要在程序中,使用某个类,可以用该类的全名,这样比较复制。
              java.util.Date date = new java.util.Date();
  • 一般使用import 语句导入这个类,然后使用该类。
package oopday2;
import java.util.Date;
//import java.sql.Date ;
public class ImportDemo {
public static void main(String[] args) {
//java.util.Date date = new java.util.Date(); // java.util.Date是Date
类的全名。
Date date = new Date(); // 使用import关键字,先导入java.util.Date , 在
类中就可以直接通过类名,使用到这个类型。
java.sql.Date date1 = new java.sql.Date(1);
}
}

5、return关键字 :java中方法的定义

  • java 中规定方法必须要指定返回值类型,如果没有返回值类型,可以使用 void 关键字。
  • java 中使用 return 关键字,在方法的内部返回数据。
  • 定义方法的语法规则:                                                                                                              方法的修饰符 方法的返回值 方法的名字(方法的参数) { 方法体 }

6、static关键字

6.1修饰成员变量

  • static修饰的成员变量不属于对象的数据结构
  • static修饰的变量属于类的变量,通常可以通过类名来引用static成员
  • static成员变量和类的信息一起存储在方法区,而不是在堆内存中
  • 一个类的静态成员变量只有一份,而非静态成员对象有多份,即每个对象都有自己的非静态成员变量。

6.2修饰成员方法

  • 类中的方法,通常都会涉及到堆具体对象的操作,这些方法在调用时,需要隐式的传递对象的引用。
  • static修饰的方法则不需要针对对象进行操作,其运行结构仅仅与输入的参数有关系。调用时候直接通过类名引用。
  • Math.sqrt(100)
  • static修饰的方法是属于类的方法,通常用于提供工厂方法,或者工具方法。
  • static修饰的方法,调用的时候没有具体的对象,因此static修饰的方法不能调用非静态成员变量和成员方法。

7、final关键字

3.1修饰类

  • final关键字修饰的类不可以被继承
  • 对于一些类,设置了final修饰,可以避免滥用继承造成的危害

3.2修饰方法

  • final关键字修饰的方法可以不被重写
  • 防止子类在定义自己的方法的时候,不经意被重写。

3.3修饰成员变量

  • final修饰成员变量,意为不可以改变。
  • 该成员变量需要在初始化的时候赋值,对象一旦创建,即该值不可以改变。

8、接口interface 

  • 接口可以看成是特殊的抽象类。
  • 接口中只能定义常量和抽象方法。
  • 一个类可以实现多个接口,多个接口之间用逗号分隔。这个类需要实现所有接口的抽象方法。
  • 接口可以作为一种类型声明变量,一个接口类的变量可以引用实现了该类的对象。通过该引用,调用接口中的方法(实现类中提供了接口方法的实现)
  • 接口间可以存在继承关系,一个接口可以通过extends关键字继承另外一个接口。
  • 子接口继承了父接口中定义的所有方法。

总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 根据所提供的华清远见-c0rtexas9资料路径,在实验中涉及到了Linux系统标准IO的应用实验。Linux系统标准IO是指Linux操作系统提供的一套标准化的IO库,可以用于操作文件、输入输出等。以下是对该实验的简单描述: 这个实验主要是关于Linux系统标准IO的应用实验。在该实验中,我们可以找到程序的源代码,该源代码是用Linux应用程序的方式编写的。通过这个实验,我们可以了解和学习Linux系统标准IO的基本操作和使用方法。 Linux系统标准IO是一套非常强大和灵活的IO库,提供了一系列的函数和方法来操作文件和进行输入输出。在实验源码中,我们可以看到一些常见的标准IO函数,比如fopen、fclose、fprintf和fscanf等。 通过这些函数,我们可以打开和关闭文件,从文件读取数据或向文件写入数据。实验源码中包含了一些常见的操作,比如读取文件、写入文件、复制文件和查找文件等。通过实验,我们可以了解到如何使用这些函数来完成不同的操作。 此外,在实验源码中可能还会涉及到一些其他的Linux系统标准IO相关的知识点,比如文件指针、文件描述符和文件流等。这些知识点对于理解和使用Linux系统标准IO函数非常重要。 通过实验中提供的源代码,我们可以进行相应的实验操作,从而更好地理解和学习Linux系统标准IO的使用。同时,我们也可以通过对实验源码的分析和调试,更深入地了解Linux系统标准IO的内部工作原理。 总之,通过这个实验,我们可以掌握Linux系统标准IO的基本操作和使用方法,从而提高我们在Linux系统中进行文件操作和输入输出的能力。 ### 回答2: 华清远见(英文名称为Far Infrared Technologies International Limited)是一家专注于红外光学技术研发及应用的企业。该公司的产品主要应用于安防监控、无人机、机器人、智能家居等领域。 关于"06. linux系统标准io实验"的实验资料包括了程序源码。在Linux操作系统中,标准I/O(Input/Output)库是用于进行文件读写和输入输出操作的一套API(Application Programming Interface)。标准I/O库提供了一系列函数,包括文件打开、读取、写入、关闭等操作,方便开发人员进行文件操作和输入输出。 这份实验资料中的源码,应该是用于展示和实践Linux系统标准I/O库的使用方法和技巧。通过编译和运行这些源码,可以了解如何使用标准I/O库来进行文件的读写和输入输出操作,包括打开文件、读取文件内容、写入文件等。 这些实验源码可以作为学习和实践Linux系统标准I/O库的参考资料。通过实际操作,可以加深对标准I/O库的理解和掌握,提高在Linux环境下进行文件操作和输入输出的能力。 总之,"06. linux系统标准io实验"的实验资料中的程序源码是用于学习和实践Linux系统标准I/O库的使用方法,通过编译和运行这些源码,可以加深对标准I/O库的理解和掌握,提高在Linux环境下进行文件操作和输入输出的能力。 ### 回答3: 华清远见-c0rtexa9资料中的程序源码目录为\linux应用实验源码\06. linux系统标准io实验\。这个实验中包含了一些关于Linux系统标准输入输出的代码示例。 在Linux中,标准输入输出是三个预先定义好的文件描述符,分别是0(stdin),1(stdout),2(stderr)。这些文件描述符与输入输出设备关联,比如键盘和屏幕。使用标准输入输出可以实现用户与程序之间的交互以及程序的输出显示。 在实验源码中,我们可以看到许多用于标准输入输出的函数,包括printf、scanf、getchar、putchar等。这些函数可以帮助我们进行输入输出操作。 在实验中,我们可以通过这些代码示例学习如何从标准输入读取用户输入,如何向标准输出显示结果。例如,可以使用scanf函数读取用户输入的数据,使用printf函数将处理结果输出显示。 通过实验中的代码示例,我们可以学习到如何处理标准输入输出的错误,如何进行格式化输入输出,如何使用缓冲区进行高效的输入输出等。 总之,华清远见-c0rtexa9资料中的\linux应用实验源码\06. linux系统标准io实验\中包含了一些关于Linux系统标准输入输出的代码示例,通过这些示例我们可以学习到如何进行标准输入输出操作,以及一些与之相关的技巧和注意事项。这对于学习Linux系统编程和开发应用程序非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值