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的主要内容,如果未能解决你的问题,请参考以下文章