20170810 - 今日技能封装 - A

Posted 清及

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20170810 - 今日技能封装 - A相关的知识,希望对你有一定的参考价值。

需列入每日问题——题目思路回溯。

1 猜数字游戏思路是?

 

2 构造器,构建器是什么?

构造方法。

 

3 this只可以用在哪里?

类中方法里。

 

4 new出来的是什么?

都是对象。

 

5 数组属于基本类型还是引用类型?

引用类型,所以引用类型数组是引用类型。

 

6 基本类型数组是什么类型数据?

引用类型

 

7 如何创建引用类型数组?

cell[] cells = new cell[4];

 

8 引用类型数组内元素默认值为多少?

null

 

9 给引用类型数组元素赋值应如何编写?

cell[] cells = new cell[4];

cells[0] = new cell();

 

10 cells[0] = new cell(2,5);cells[0]是什么类型数据,在哪?装了什么?

引用类型数据,但装在堆中(cells[0]是cells数组的成员变量),cell[0]对象的地址。

 

11 问cells[0].row为多少?

cells[0] = cells[1];

cells[1].row = 5

cells[0].row = 6

6

 

12 如何初始化cell型数组内的元素?

cell[] cells = new cell[]{

new cell(0,1),

new cell(0,1),

new cell(0,1),

}

 

13 如何创建引用类型数组的数组?默认值为?如何为数组内元素赋值?

cell[][] cells = new ceel[10][]

null

cells[0] = new cell[1];

 

14 cells是什么数组?

中括号前什么型,就是什么类型的数组,cell[]型数组的数组。

 

15 int [ ][ ] arr = new int[3][ ];

arr[0] = new int[2];

arr[1] = new int[3];

arr[2] = new int[2];

arr[1][1] = 100;

 

15 若数组内每个数组内元素个数相同,可如何缩写?

cell[][] = new cell[2][3]

 

16 凡是碰到需要写元素个数的情况,应注意什么?

不要写死,用arr.length.

 

17 arr[0][1] = 100;表示什么?

给arr数组内第一个数组元素的第二个元素赋值为100。

 

18 若引用类型数组内每个元素值相同,可通过什么赋值?

遍历。

 

19 1 创建一个有4个元素的cell数组

为每一个元素单独赋值

2 创建一个有4个元素的cell型数组,并统一赋值

3 创建有三个元素的int型二维数组

第一个元素有三个值,2-3,3-2

 

 

 

cell[] cells = new cell[4];

cells[0] = new cell(2,5);

cells[1] = new cell(1,3);

cells[2] = new cell(3,5);

System.out.println(cells[3]);

 

cell[] cells2 = new cell[]{

new cell(0,1),

new cell(2,2),

new cell(3,5)

};

 

int[][] int1 = new int[4][];

int1[0] = new int[3];

int1[1] = new int[3];

int1[2] = new int[2];

int1[2][1] = 100;

 

int[][] int2 = new int[3][5];

for(int i = 0;i < int2.length;i++){

for(int j = 0;j < int2[i].length;j++){

int2[i][j] = 100;

System.out.println(int2[i][j]);

}

}

 

20 定义引用类型数组类内方法时,调用了类属性,那么该属性需要一开始就赋值吗

cell[] cells = new cell[]

(一开始只是定义,无初始化)?

不需要,只要在构造方法中为属性初始化即可,不初始化则会出现无指针错误.

从实际应用过程解析,首先new一个对象,对象在建立时首先调用构造方法,

为成员变量赋值,

(接着再使用其方法)

若无定义构造方法,则会赋予默认值,引用类型数组的数据类型的默认值为null,所以后续在使用定义的方法时,

会出现无指针错误.

因此需要构造一个赋予默认值的方法,如属性为cell型数组,构建其构造方法(赋值给其属性cells)

J(){

cells = new cell[4];

}

由于格子位置属性会变化,因此需要传参,因此改为.

J(int row,int col){

cells = new cell[4];

cells[0] = new cell(row,col);

cells[1] = new cell(row+1,col);

cells[2] = new cell(row+2,col);

cells[3] = new cell(row+2,col-1);

}

 

无参构造方法

J(){

this(0,0);

}

 

21 引用类型数组的类后续定义方法时,调用类内属性需传参吗?

不需要.

 

22 定义构造方法时可以直接赋值吗?如cells[0].row = 1;

由于cells[0]为引用类型数据,所以默认值为null,需要先定义为cell型才可使用./

 

23 如何构建构造方法?

需要记住构造方法的本质是:为成员变量赋于初值.

因此如果成员变量为cell[] cells,那么为cells赋值的方法便是

cells = new cell[];

 

24 如何使一个类继承另外一个类?

class pupil extends person{

 

}

 

25 继承除成员变量外还继承了什么?

类方法

 

26 可以嵌套继承吗?如B继承A,C继承B,C拥有A内成员变量吗?

拥有.

 

27 什么是泛化?

即继承.

 

28 如何理解继承后的类?

相当于一开始便有父类的属性及方法.

 

29 为何子类中明明没有构造cells,但却可以被子类调用?

tetromino(){

cells = new cell[4];

}

构造子类之前先构造父类,构造父类则会调用构造方法,构造方法会赋cells默认值,

若为有传参,且参数名与父类成员变量同名,则父类中成员变量必须加this.以示区分,

cells值再提供给子类使用.

构造子类之前先构造父类:

 

29 子类构造方法都会调用super()吗?

会.

 

29 如何调用父类的构造方法,成员变量,方法?实际中是怎样呢?

super();

super.cell;

super.getInfo();

无需添加super.

 

30 super指什么?

当前对象的父类对象.

 

31 构造子类之前必须?

构造父类.

 

32 super()指什么

父类的构造.

 

33 父类定义了有参构造,调用子类为什么会报错?

(定义了有参则默认为调用有参构造)子类无传参到父类的构造中.

 

34 break跳出的是?

用于跳出循环及switch.

 

35 在for循环内需要用for来循环判断的情况用什么辅助判断?

开关算法,for循环判断循环变量是否符合跳出条件,符合则false(并用跳出break),再在判断布尔类型并输出.

//方法2,将所有情况遍历,用if...else...——好处:效率更高

 

36 什么是向上造型?向上造型后可以访问什么对象?

父类方法可以接受所有子类对象.

父型的引用指向了子型的对象,子型的对象赋给了父型;父类中定义的成员变量及方法.

Animal o1 = new Tiger()

 

37 如何判断造型?

新建对象符合小转大

 

38 什么类型可以接收多个类型的对象?

父类接收子类.

 

39 建议自己造型传值还是系统造型?

自己造型传值,更直观.

 

40 向上造型用于什么情况?

相同类型子类的方法重载可转化为方法的重载.

public static void printWall(T t){

 

}

 

public static void printWall(tetromino t){

 

}

 

41 能点(t.cells)出什么,看什么?

与引用有关,与对象无关.

 

42 子类内父类的属性,方法,前面默认带?

super.

 

43 如何判断成员变量是否能被调用?

1 是否具有传递性?

2 是否符合继承.

 

44 类可以自调用吗?

可以.

public class ExerciseTest {

    public static void main(String[] args){

        ExerciseTest f = new ExerciseTest();

        System.out.println(f.add("4", "5"));

    }

    

     public int add(int x, int y) {

         return x + y;

    }

    public String add(String x,String y) {

        return x + y;

    }

}

 

45 向上造型时,可否访问到子类元素?

不能.

 

46 继承时体现什么性?向上造型时体现什么性?

传递性,不可传递性.

 

47 简述一个继承父类的子类的创建过程.

首先调用父类的构造方法,若定义了有参构造,则必须在子类的构造方法第一行用super();传参,

再构造子类的构造方法,而其他的属性及方法则可理解为一开始就存在.

 

48 同一类文件下应如何定义新的类?

在 文件名类 外部定义,

public class test {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

father F = new father();

son s = new son();

F = s;

return F.so;

}

 

}

class father{

int num;

father(){

num = 5;

}

}

 

class son extends father{

int so;

son(){

so = 5;

}

}

 

49 super用于什么情况?

子类成员变量或方法与父类变量或方法同名时.

 

50 父类中是什么?子类中是什么?

父类中是多个子类共有的属性方法,子类中是子类特有的属性和方法

 

51 如何定义引用类型数组对象?

不需要定义,是在某个对象抽象而出的类中定义.

 

52 类内定义方法时,调用了类内属性,需要在其前加this.吗?

不需要.

 

53 何时需要用到向上造型?

条件为:定义的方法适合多个子类对象,

于是在此时将子类对象赋值给父类对象,从而实现同一个方法,接收多个类型的数据,

注意方法内调用的参数为父类的参数.

 

54 漏写,

1 注意定义方法时传的是对象,不是对象的某个属性

//2 然后再在方法内调用对象的属性。

//3 定义方法时,穿的参数为父类类型参数。

 

55 如何定义父类的构造方法,什么思路,即在实际应用如何联系父类构造建立子类构造(实际:先建父类,再建子类)?

定义子类共有的属性及方法.

 

拿俄罗斯方块来说

父类定义子类共有的属性,因此

cell[] cells = new cell[4]

 

而子类T便是在父类创建的cells基础上构造,

子类T的构造需要传参,于是便加上参数

T(int row,int col){

 

}

 

思路理清,做题速度大大提升!!

需列入每日问题——题目思路回溯。
  1 猜数字游戏思路是?
   
  2 构造器,构建器是什么?
  构造方法。
   
  3 this只可以用在哪里?
  类中方法里。
   
  4 new出来的是什么?
  都是对象。
   
  5 数组属于基本类型还是引用类型?
  引用类型,所以引用类型数组是引用类型。
   
  6 基本类型数组是什么类型数据?
  引用类型
   
  7 如何创建引用类型数组?
  cell[] cells = new cell[4];
   
  8 引用类型数组内元素默认值为多少?
  null
   
  9 给引用类型数组元素赋值应如何编写?
  cell[] cells = new cell[4];
  cells[0] = new cell();
   
  10 cells[0] = new cell(2,5);cells[0]是什么类型数据,在哪?装了什么?
  引用类型数据,但装在堆中(cells[0]是cells数组的成员变量),cell[0]对象的地址。
   
  11 问cells[0].row为多少?
  cells[0] = cells[1];
  cells[1].row = 5
  cells[0].row = 6
  6
   
  12 如何初始化cell型数组内的元素?
  cell[] cells = new cell[]{
  new cell(0,1),
  new cell(0,1),
  new cell(0,1),
  }
   
  13 如何创建引用类型数组的数组?默认值为?如何为数组内元素赋值?
  cell[][] cells = new ceel[10][]
  null
  cells[0] = new cell[1];
   
  14 cells是什么数组?
  中括号前什么型,就是什么类型的数组,cell[]型数组的数组。
   
  15 int [ ][ ] arr = new int[3][ ];
  arr[0] = new int[2];
  arr[1] = new int[3];
  arr[2] = new int[2];
  arr[1][1] = 100;
   
  15 若数组内每个数组内元素个数相同,可如何缩写?
  cell[][] = new cell[2][3]
   
  16 凡是碰到需要写元素个数的情况,应注意什么?
  不要写死,用arr.length.
   
  17 arr[0][1] = 100;表示什么?
  给arr数组内第一个数组元素的第二个元素赋值为100。
   
  18 若引用类型数组内每个元素值相同,可通过什么赋值?
  遍历。
   
  19 1 创建一个有4个元素的cell数组
  为每一个元素单独赋值
  2 创建一个有4个元素的cell型数组,并统一赋值
  3 创建有三个元素的int型二维数组
  第一个元素有三个值,2-3,3-2
   
   
   
  cell[] cells = new cell[4];
  cells[0] = new cell(2,5);
  cells[1] = new cell(1,3);
  cells[2] = new cell(3,5);
  System.out.println(cells[3]);
   
  cell[] cells2 = new cell[]{
  new cell(0,1),
  new cell(2,2),
  new cell(3,5)
  };
   
  int[][] int1 = new int[4][];
  int1[0] = new int[3];
  int1[1] = new int[3];
  int1[2] = new int[2];
  int1[2][1] = 100;
   
  int[][] int2 = new int[3][5];
  for(int i = 0;i < int2.length;i++){
  for(int j = 0;j < int2[i].length;j++){
  int2[i][j] = 100;
  System.out.println(int2[i][j]);
  }
  }
   
  20 定义引用类型数组类内方法时,调用了类属性,那么该属性需要一开始就赋值吗
  cell[] cells = new cell[]
  (一开始只是定义,无初始化)?
  不需要,只要在构造方法中为属性初始化即可,不初始化则会出现无指针错误.
  从实际应用过程解析,首先new一个对象,对象在建立时首先调用构造方法,
  为成员变量赋值,
  (接着再使用其方法)
  若无定义构造方法,则会赋予默认值,引用类型数组的数据类型的默认值为null,所以后续在使用定义的方法时,
  会出现无指针错误.
  因此需要构造一个赋予默认值的方法,如属性为cell型数组,构建其构造方法(赋值给其属性cells)
  J(){
  cells = new cell[4];
  }
  由于格子位置属性会变化,因此需要传参,因此改为.
  J(int row,int col){
  cells = new cell[4];
  cells[0] = new cell(row,col);
  cells[1] = new cell(row+1,col);
  cells[2] = new cell(row+2,col);
  cells[3] = new cell(row+2,col-1);
  }
   
  无参构造方法
  J(){
  this(0,0);
  }
   
  21 引用类型数组的类后续定义方法时,调用类内属性需传参吗?
  不需要.
   
  22 定义构造方法时可以直接赋值吗?如cells[0].row = 1;
  由于cells[0]为引用类型数据,所以默认值为null,需要先定义为cell型才可使用./
   
  23 如何构建构造方法?
  需要记住构造方法的本质是:为成员变量赋于初值.
  因此如果成员变量为cell[] cells,那么为cells赋值的方法便是
  cells = new cell[];
   
  24 如何使一个类继承另外一个类?
  class pupil extends person{
   
  }
   
  25 继承除成员变量外还继承了什么?
  类方法
   
  26 可以嵌套继承吗?如B继承A,C继承B,C拥有A内成员变量吗?
  拥有.
   
  27 什么是泛化?
  即继承.
   
  28 如何理解继承后的类?
  相当于一开始便有父类的属性及方法.
   
  29 为何子类中明明没有构造cells,但却可以被子类调用?
  tetromino(){
  cells = new cell[4];
  }
  构造子类之前先构造父类,构造父类则会调用构造方法,构造方法会赋cells默认值,
  若为有传参,且参数名与父类成员变量同名,则父类中成员变量必须加this.以示区分,
  cells值再提供给子类使用.
  构造子类之前先构造父类:
   
  29 子类构造方法都会调用super()吗?
  会.
   
  29 如何调用父类的构造方法,成员变量,方法?实际中是怎样呢?
  super();
  super.cell;
  super.getInfo();
  无需添加super.
   
  30 super指什么?
  当前对象的父类对象.
   
  31 构造子类之前必须?
  构造父类.
   
  32 super()指什么
  父类的构造.
   
  33 父类定义了有参构造,调用子类为什么会报错?
  (定义了有参则默认为调用有参构造)子类无传参到父类的构造中.
   
  34 break跳出的是?
  用于跳出循环及switch.
   
  35 在for循环内需要用for来循环判断的情况用什么辅助判断?
  开关算法,for循环判断循环变量是否符合跳出条件,符合则false(并用跳出break),再在判断布尔类型并输出.
  //方法2,将所有情况遍历,用if...else...——好处:效率更高
   
  36 什么是向上造型?向上造型后可以访问什么对象?
  父类方法可以接受所有子类对象.
  父型的引用指向了子型的对象,子型的对象赋给了父型;父类中定义的成员变量及方法.
  Animal o1 = new Tiger()
   
  37 如何判断造型?
  新建对象符合小转大
   
  38 什么类型可以接收多个类型的对象?
  父类接收子类.
   
  39 建议自己造型传值还是系统造型?
  自己造型传值,更直观.
   
  40 向上造型用于什么情况?
  相同类型子类的方法重载可转化为方法的重载.
  public static void printWall(T t){
   
  }
   
  public static void printWall(tetromino t){
   
  }
   
  41 能点(t.cells)出什么,看什么?
  与引用有关,与对象无关.
   
  42 子类内父类的属性,方法,前面默认带?
  super.
   
  43 如何判断成员变量是否能被调用?
  1 是否具有传递性?
  2 是否符合继承.
   
  44 类可以自调用吗?
  可以.
  public class ExerciseTest {
      public static void main(String[] args){
          ExerciseTest f = new ExerciseTest();
       System.out.println(f.add("4", "5"));
      }
      
       public int add(int x, int y) {
           return x + y;
      }
      public String add(String x,String y) {
          return x + y;
      }
  }
   
  45 向上造型时,可否访问到子类元素?
  不能.
   
  46 继承时体现什么性?向上造型时体现什么性?
  传递性,不可传递性.
   
  47 简述一个继承父类的子类的创建过程.
  首先调用父类的构造方法,若定义了有参构造,则必须在子类的构造方法第一行用super();传参,
  再构造子类的构造方法,而其他的属性及方法则可理解为一开始就存在.
   
  48 同一类文件下应如何定义新的类?
  在 文件名类 外部定义,
  public class test {
   
  public static void main(String[] args) {
  // TODO Auto-generated method stub
  father F = new father();
  son s = new son();
  F = s;
  return F.so;
  }
   
  }
  class father{
  int num;
  father(){
  num = 5;
  }
  }
   
  class son extends father{
  int so;
  son(){
  so = 5;
  }
  }
   
  49 super用于什么情况?
  子类成员变量或方法与父类变量或方法同名时.
   
  50 父类中是什么?子类中是什么?
  父类中是多个子类共有的属性方法,子类中是子类特有的属性和方法
   
  51 如何定义引用类型数组对象?
  不需要定义,是在某个对象抽象而出的类中定义.
   
  52 类内定义方法时,调用了类内属性,需要在其前加this.吗?
  不需要.
   
  53 何时需要用到向上造型?
  条件为:定义的方法适合多个子类对象,
  于是在此时将子类对象赋值给父类对象,从而实现同一个方法,接收多个类型的数据,
  注意方法内调用的参数为父类的参数.
   
  54 漏写,
  1 注意定义方法时传的是对象,不是对象的某个属性
  //2 然后再在方法内调用对象的属性。
  //3 定义方法时,穿的参数为父类类型参数。
   
  55 如何定义父类的构造方法,什么思路,即在实际应用如何联系父类构造建立子类构造(实际:先建父类,再建子类)?
  定义子类共有的属性及方法.
   
  拿俄罗斯方块来说
  父类定义子类共有的属性,因此
  cell[] cells = new cell[4]
   
  而子类T便是在父类创建的cells基础上构造,
  子类T的构造需要传参,于是便加上参数
  T(int row,int col){
   
  }
   
  思路理清!!

以上是关于20170810 - 今日技能封装 - A的主要内容,如果未能解决你的问题,请参考以下文章

20170804 - 今日技能封装 - A

20170811 - 今日技能封装 - A

20170817 - 今日技能封装 - A

20170803 - 今日技能封装 - A

20170818 - 今日技能封装 - A

20170802 - 今日技能封装 - A