学习主题:面向对象初步
学习目标:
1.掌握面向对象的继承
2.掌握方法的重写
3.掌握equals方法和==
4.掌握super关键字
5.掌握封装
1.面向对象三大特征_继承_instanceOf
(1)用你的理解阐述一下什么是继承
子类想要用父类的一些方法和调用,但是重新写方法太过于繁杂,所以可以直接继承父类的方法,只需要使用extends关键字就可以了,这样既方便又简化。
(2)继承一个类,使用什么关键字?一个类能继承多个类么?
使用extends关键字,一个类只能继承一个类。
(3)如果A继承B ,B继承C,那么A能获得B和C的所有属性和方法么?
可以。
(4)继承的好处是什么?
代码复用,快速扩展类的功能,实现多态的基础。
(5)InstancOf关键字的作用是什么? instanceOf的返回值是什么?
InstancOf关键字是在运行时指出对象是否是特定类的一个实例,返回true 或false
(6)子类对象 instanceOf 父类,返回值是什么?
返回true
2.继承_方法的重写override_返回值类型问题
(1)为什么需要重写?
因为可能父类中有些方法不适合子类,子类需要新的一些方法。
(2)构成重写的要素是什么?
方法名,形参列表要相同;返回值类型要小于等于父类;访问权限要大于等于父类。
3.继承_object类的用法_重写toString方法
(1)什么是object类?
是所有java类的根基类。
(2)任何一个类都可以使用object类的所有方法和属性,这句话对么?
对。
(3)打印一个对象,其实是在调用这个对象的什么方法?打印出来的是什么?
调用toString方法,默认会返回“类名+@+16进制的hashcode”。
4.继承_equals方法的重写_阅读object和String源码
(1)== 操作符的作用是什么?
代表双方是否相同,如果是基本类型则判断值是否相等,如果是引用类型则判断地址是否相等。
(2)Object类的Equals方法的作用是什么?
Object 的 equals 方法默认就是比较两个对象的hashcode,是同一个对象的引用时返回 true 否则返回 false。
(3)String类中重写了equals方法了么?为什么?
重写了,因为要根据要求判断对象的内容是否相同。
5.继承_super 父类对象引用_继承树追溯问题
(1)Super关键字的作用是什么?
调用父类构造器
(2)实例化子类对象之前必先实例化其父类对象,这句话对么?为什么?
对,因为在java构造方法中默认调用super方法,而super方法就是用来访问父类中被子类覆盖的方法和属性。
6.面向对象三大特征_封装的使用_访问控制符
(1)为什么需要封装?
因为程序设计追求“高内聚,低耦合”,把复杂的东西封装,把简单的展现出来。
(2)什么是高内聚,低耦合?举生活中的例子说明.
看电视的电源开关,平常的一些电器开关。里面很复杂,但是我们操作起来很简单。
(3)有哪几种访问控制符?它们的访问权限分别是?
Private,default,protected,public,访问权限从严到宽。
学习目标:
1 掌握什么是javabean
2 掌握什么是多态以及向上向下转型
3 掌握final关键字
4 掌握数组的声明,初始化,遍历
1.封装_使用细节_javabean的规则
(1)Javabean的作用是什么?
java中的一些实体类,使程序操作简单,代码简化,提高效率。
(2)Javabean的三个要素是什么?
一般使用private访问权限,提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作(注意:boolean变量的get方法是is开头!),一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰。
(3)子类可以使用父类的私有属性和方法么?
不可以。
2.面向对象的三大特征_多态_多态的三个必要条件
(1)怎么理解多态?属性有多态么?
多态是指同一个方法调用,由于对象不同可能会有不同的行为。属性没有多态。
(2)多态的三个必要条件是什么?
继承,方法重写,父类引用指向子类对象。
3.对象的转型_向上转型_向下强制转型_ClassCastException处理
(1)子类对象可以使用父类的引用接收么?需要强制转型么?
可以,需要。
(2)ClassCastException是什么错误?
类型转换异常。
4.Final修饰变量和方法和类
(1)Final修饰变量会怎么样?
被修饰的变量不可变,只能赋值一次。
(2)Final修饰方法会怎么样?
该方法不可被子类重写,但是可以重载。
(3)Final修饰类会怎么样?
修饰的类不能被继承。
5.数组的使用_内存状态_动态初始化和遍历_数组越界异常
(1)数组是什么?
是相同类型数据的有序集合。
(2)数组的特点是什么?
长度确定,数组一旦被创建,其大小不可改变;
其元素必须是想同类型,不可以出现混合类型;
数组数据类型可以是任何类型,包括基本类型和引用类型。
(3)声明数组的两种方式是什么?
以数组为例:type[] arr_name;
Type arr_name[];
(4)数据的下标从几开始?数组的长度如何求出?如何遍历数组?
数组下标从0开始; 数组长度:数组名.length; 使用for循环遍历。
6.数组的三种初始化方式_静态初始化_动态初始化_默认初始化
(1)写出数组静态初始化的代码
//静态初始化
int[] a ={2,4,6,5};
User[] b={new User(1001,“高琪”),
new User(1002,“高二琪”),
new User(1003,“高三琪”)};
(2)写出数组动态初始化的代码
//动态初始化
int[] a1 = new int[2];//先分配空间
a1[0]=1;//给数组元素赋值
a1[1]=2;
(3)什么是默认初始化?
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
//默认初始化
int[] c = new int[3];
7.数组的遍历_foreah循环
(1)除了for循环可以遍历数组外,还有什么可以遍历数组?
For-each循环。
(2)Foreach可以修改数组中的值么?for循环可以修改数组中的值么?
For-each不可以修改数组中的值,for循环可以。