20170810 - 今日技能封装 - A

本文详细介绍了Java中数组的基本概念,包括引用类型数组的创建、初始化及操作方法,并深入探讨了类的继承特性,涉及构造方法、super关键字的使用及向上转型等关键知识点。

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

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){
  
 }
  
 思路理清!!

转载于:https://www.cnblogs.com/qingji123/p/7341790.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值