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

在面向对象阶段,学习了面对对象的方法、类和对象、成员变量、局部变量、静态常量、构造方法、面对对象的三大特性(封装、继承、多态)、OBject类、访问修饰符、final关键字、抽象类(abstract)、接口类interface、static。

类和对象

类(class):具有相同属性和行为的独享的集合。

方法:描述对象的动作,在程序中,通过定义变量的像是表现属性

属性:描述对象的特征

定义类:

[修饰符] class 类名{

//属性(变量)

//行为(方法)

}

public class Car {
//定义属性
String brand;//品牌
String color;//颜色
int seat=5;//座位数
//定义行为
void go(){
System.out.println("在行驶");
}
void stop(){
System.out.println("停下来了");
}
void fly(){
System.out.println("飞起来了");
}
}

创建对象

类名 对象名=new 构造方法([参数]);

创建对象,通过"."操作符访问类中的非私有属性和方法

/*
* 创建工厂类(程序入口),该类可以创建车的对象
* */
public class Factory {
public static void main(String[] args) {
//类名 对象名 = new 类名([参数]);
//创建车类的对象c1
Car c1 = new Car();
//给对象的属性赋值
c1.brand = "宝马";
c1.color = "白色";
System.out.println("车名:" + c1.brand + ",颜色:" + c1.color + ",座位数:"
+ c1.seat);
c1.go();
c1.fly();
c1.stop();
Car c2 = new Car();
c2.brand = "五菱宏光";
c2.color = "黑色";
c2.seat = 7;
System.out.println("我有一辆" + c2.seat + "座的" + c2.color + c2.brand);
}
}

类和对象的关系

对象是类的具体表现,类是对象的集合(模板)

先定义类,才能通过该类创建对象

成员变量、局部变量、静态常量

成员变量

定义在类中的变量,称为成员变量,拥有默认值

成员变量随着对象的创建而存在没随着对象的回收而销毁。作用范围在类内部。成员变量有初始值。

public class Car{
String brand;//这就是一个成员变量,默认值为null
void info(){
//这里brand虽然没有赋值,但是它是一个成员变量,属于引用类型,默认值为null
System.out.println("车名:"+brand);//如果不赋值,最终打印"车名:null"
}
}

局部变量

定义在方法中的变量,称为局部变量。默认没有默认值,赋值之后才能使用

 局部变量随着类的加载而存在,随着方法的执行结束而销毁。作用范围在方法内部。

public class Test{
public static void main(String[] args){
//这里的num和name就是一个局部变量,没有默认值
int num;
System.out.println(num);//这里无法通过编译,因为num没有赋值
String name="小明";
System.out.println(name);//这样才能正常输出
}
}

静态常量

被final、static修饰的成员变量

静态常量随着类的加载而存在,随着类的销毁而销毁。作用范围在程序周期中。静态常量有初始值

构造方法

它是一个特殊的方法,没有返回值,方法名和类名一致,每一个类在定义时,都有一个默认隐藏的无参数的构造方法,在创建对象时调用。构造方法通常用于初始化成员变量。

public class 类名{
     //这是无参构造方法,默认就会存在,不过是隐藏的
     public Test(){
}
}

特点:

构造方法没有返回值(没有返回值这一部分,不是void),构造方法名必须和类名相同

每个类默认有一个隐藏无参数的构造方法,方法体中没有内容,用于创建无参数的对象

如果自己写了有参数的构造方法,默认无参数的构造方法就会失效。如果想要同时拥有带参数和不
带参数的构造方法,就需要把它们都写出来
构造方法可以限制创建对象时的参数
构造方法不能通过 “.” 操作符访问,只能通过 new 关键字创建对象时自动调用,所以构造方法通常用
于初始化成员变量

三大特性:封装、继承、多态

封装

类中的属性使用private修饰,防止非当前类对其进行访问
步骤:
1、各类中的所有属性添加private访问修饰符
2、给每个属性添加getxxx()方法用于读取属性,添加setxxx()方法用于给属性赋值(快捷方法:按alt+inster ==>getter and setter)

继承

A 可以通过 extends 关键字继承类 B
语法: class A extends B {}
A 称为 子类 、派生类、衍生类、 subClass
B 称为 父类 、根类、超类、 superClass
继承后,子类可以访问父类中非私有 ( 没有被 private 修饰的内容 ) 的属性和方法。
子类只能继承一个父类,父类可以由多个子类。
特点
1、如果多个类之中有相同或类似的代码,可以将这些代码提取出来定义在一个公共的类中,这个        类就 是父类。再让那些类就继承这个父类,那些类就是子类,这样就能减少子类中的重复代码
2、子类对象可以直接访问父类中非私有 ( 不用 private 修饰 ) 的属性和方法
3、子类可以对父类中的方法进行扩展或覆盖,这称为方法重写。重写后,子类对象再调用该方法        时, 执行的是重写后的内容
4、Java 中是单继承。一个子类只能 extends 一个父类,一个父类可以有很多个子类
5、Java 中可以多重继承。类 A 可以继承类 B ,类 B 可以继承类 C ,这时类 A 既是类 B 的子类,也可以        称为 类C 的子类,可以访问类 B 与类 C 中非私有的成员
6、任何类都是 Object 类的子类
7、在创建子类对象时,会先执行父类中相应的构造方法

方法重写Override

当子类继承父类后,可以对父类中的非私有的方法进行扩展或覆盖,这个过程称为重写。

要求:

方法名、参数列表、返回值必须和父类一致

访问权限不能比父类更严格

不能抛出比父类更大的异常

方法重载overload

在一个类中,多个方法的方法名相同,参数列表不同时,这些就是重载的方法。即同名不同参

要求

方法名相同

参数列表(类型和数量)不同

与返回值无关

this和super关键字

可以当作对象使用,也可以当作构造方法使用

当对象使用:"this.属性"或"this.方法"或"super.属性"或"super.方法"

此时的this或super表示“当前类”或“父类对象”

public calss Person{
     private String name;
     public void setName(String name){
        this.name=name;//这个this表示当前类Person的对象
}
}

当构造方法用"this([参数])super([参数])"

此时的 this([ 参数 ]) super([ 参数 ]) 表示当前类或当前类的父类的某个构造方法。
public class Person(){
private String name;
private int age;
public Person(){
//这句话表示调用Person(String name,int age)构造方法,只能放在第一行
this("小明",20);
}
public Person(String name,int age){
this.name=name;
this.age=age;
}

注意

1、如果父类中有无参数的构造方法,在子类的构造方法中,可以不写 super() ,系统会自动调用。
2、如果父类中有带参数的构造方法,没有无参数的构造方法,在子类的构造方法中,必须要写 super() ,并 且赋予适当的参数。

Object类

它是所有类的父类,任何类都可以间接地继承了该类,但没有明确的在extends中体现出来。所有类都可以访问Object类中的方法,或对其进行重写。

向上转型

Person p = new Person();
Object obj=p;

向下转型

Animal an = new Animal();
Cat c=(Cat)an;

多态

多态就是子类的对象指向父类的引用 ( 子类对象使用父类变量接收,即向上转型 )
父类 变量 = new 子类 ();
public class Father{
}
public class Son extends Father{
}
public class Main{
public static void main(String[] args){
Son son = new Son();
//这就是多态的体现
//子类的对象,可以使用父类的变量保存
Father father = new Son();
}
}
多态实现的条件
在继承关系中
子类需要重写父类中的方法
父类的引用指向子类的对象 ( 向上转型 )

访问修饰符

 

访问权限表

final关键字

用于修饰属性、方法和类 。当final修饰属性时,该属性的值不可更改。

修饰属性:变量成常量,不能改变其中的值。

修饰方法:方法称为最终的方法,不能重写。

修饰类:类称为最终类,不能被继承。

在属性前加上final,这时的属性称为常量。常量命名时,所有字母都要大写,多个单词用_隔开。

final 数据类型 常量名;
final  NUM=123;

修饰方法:该方法不能被重写。在返回值前面加上final

public class Father{
     public final void fun(){
}
}

修饰类时,该类不能被继承,在class前面加上final

public final class Father(){
}
//提示错误,该类不能被继承
public class Son extends Father{
}

抽象类(abstract)

修饰方法:  访问修饰符 abstract 返回值类型 方法名(参数类型 形参名称);

//当一个类中有抽象方法时,该类也需要是一个抽象类
public abstract class Game{
//这就是一个抽象方法,没有方法体
public abstract void startGame(Player player);
}

修饰类 访问修饰符 abstract class 类名{}

如果一个类中有抽象方法,这个类必须也是一个抽象类。

抽象类不能被实例化(不能创建对象)

抽象类中,可以存在非抽象方法,如getter/setter或构造方法。

当抽象类的构造方法执行时,不会创建对象。

当一个类不希望创建它本身对象或在它其中有抽象方法时,就将该类定义为抽象类。
特点
修饰类:被修饰的类称为抽象类
 1、抽象类不能被实例化,无法创建对象。
2、抽象类中有构造方法,在创建其子类对象时,自动调用执行。
3、抽象类中可以有抽象方法,也可以有非抽象方法。
4、抽象类的子类要么继续成为抽象类,要么重写抽象父类中的所有抽象方法。
修饰方法:被修饰的方法称为抽象方法
1、抽象方法没有方法体。
3、抽象方法只能出现在抽象类或接口中。
3、abstract 不能修饰构造方法和静态方法。

接口interface

接口是一种数据类型,类似于类,定义接口时,可用interface替换class.
接口是一个完全抽象类。
extends implements
A extends B
A 当做类 B 的子类,继承。
A implements 接口 A ,接口 B...
A 当做接口 A 、接口 B 的实现类 (" 子类 ")
接口 A extends 接口 B
接口 A 通过 extends 继承接口 B
A extends B implements 接口 A ,接口 B...
A 是类 B 的子类,是接口 A 、接口 B 的实现类,同时能访问这三个 " 父类 " 中的数据。
什么时候使用接口
如果想要让某个类作为多个" " 的子类时,将这些 " 父类 " 定义为接口
如果某个类中的所有方法,都是抽象方法时,可以将这个抽象类改为接口
定义接口
public interface 接口名{
    //接口中只能定义公开的静态常量且要赋值,默认用public static final修饰
    double PI = 3.14;
    //接口中的方法默认用public abstract修饰,表示公开的抽象方法
    void fun(String name);
    //接口中不能定义普通方法
    //void fun1(){}
    //jdk1.8之后,接口中可以定义默认方法或静态方法,有方法体
   defult void fun2(){

  }
}

static (静态的)

是一个修饰符,可以修饰属性、方法、代码块。

被static修饰的内容,被称为静态成员。静态成员在类加载的时候,就会保存到内存中,可以脱离对象存 在。 所以访问静态成员时,可以不用创建对象,直接通过类名访问。

特点

静态方法中只能使用静态成员,不能使用非静态成员。

非静态方法中可以使用静态成员。

静态方法中,不能使用this关键字。

  • 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、付费专栏及课程。

余额充值