yangsirgo / softwareTest

软件设计师考试
6 stars 2 forks source link

面向对象知识点 #57

Closed yangsirgo closed 3 years ago

yangsirgo commented 3 years ago

疑问:

  1. 字段 前缀 final 是什么?
  2. 字段如何表示。
  3. abstract 如何使用。干什么用的。
  4. interface 的代码结构,作用。 接口的声明: interface [接口名]{ ... }

接口的实现。class [类名] implements [接口名] { ... }

特殊的接口方法:接口中的方法只有方法名没有方法体。interface [接口名]{ [返回数据类型 void/String/...][方法名](参数列表) }

  1. 构造函数的写法。
  2. 实例化代码的书写。
  3. 继承: 继承的表示: class [子类名] extends [父类名]{ ... } super 与 this 的使用:继承关系中为了区分父类与子类,会用super代替父类指针,this 代替子类指针, ` class [父类名] { [属性1]; [父类名](属性1){ 属性1 = 1 } }

    class [子类名] { [属性2]; [子类名](属性1, 属性2){ super([属性1]); //这里的 super([属性1]) 是父类带属性1参数的构造函数 this.[属性2] = [属性2]; //这里的this是当前类指针。 // 子类可以利用 super 指针调用父类的属性和方法。 } }

`

  1. 了解类的结构--属性和构造函数。 构造函数的结构: class [类1] { [属性1]; // [类1] (){} //默认无参构造函数 [类1] (属性1, 形参1){ this.属性1 = 形参1; // 一般这里的形参命名与属性名一致 } }

继承中构造函数: 创建子类对象时,会先执行其父类的构造函数,然后执行子类的构造函数,最后完成对象的创建。 ` class [父类名] { [属性1]; [父类名] (){ [属性1] = 10; System.out.println("这是父类构造函数"); } }

class [子类名] { [属性2]; [子类名] (){ [属性2] = 20; System.out.println("这是子类构造函数"); } }

// 主函数测试 public class test { public static void main (String [] args){ System.out.println([子类对象名].[属性1] + “” + [子类对象名].[属性2]); } }

// 这里输出的结构应该是 // 这是父类构造函数 // 这是子类构造函数 // 10 20

`

  1. get 方法和 set 方法 会在本类中设定 set() 和 get () 方法,对相关属性进行操作。

` class [类名] {
private [数据类型][属性1]; public [数据返回类型] get 属性 1(){ return [属性1]; }

public void set 属性 1([数据类型][形参]){ this.[属性1] = [形参];//这里的形参名一般与属性名一致 } } ` 其他函数: 类中成员格式如下所示: [ 访问控制符 ][返回类型][方法名]( 形参1类型 形参名,形参2 类型 形参名, ...... ) 访问控制符为 private/pubic/default/protected/abstract

10.了解对象的实例化: 超类相关的实例化 [父类名][对象名] = new [子类名][参数列表]; // 此时以对象名调用某方法(子类从父类直接继承而来的方法),虽然将父类对象的句柄指向了子类对象,实际操作的还是子类对象,只不过将对象句柄声明为父类的数据类型,此时编译器根据实际情况选择了子类的函数。