强调:一定用自己的话总结,避免抄文档,否则视为作业未完成。
this关键字的作用
局部变量和成员变量存在二义性,也就是变量名有歧义。为了解决该问题
用this关键字。
为成员变量设置值, 构造器和setter方法的选择,为什么?
构造器和setter方法都可以给对象设置数据:
构造器,在创建对象的时候设置初始数据,只能初始化一次。
setter方法,创建对象后再设置初始数据,可以设置多次。
为什么需要继承?
为了解决代码重复,多个类存在共同代码的问题
Java中的继承语法
public class 父类名{
// 存放多个子类共同的字段和方法
}
public class 子类名 extends 父类名{
// 存放自己特有的(独有的)字段和方法
}
Java中类只支持单继承,但是支持多重继承。也就是说一个子类只能有一个直接的父类,父类也
可以再有父类。
子类能从父类中继承到哪些成员?
子类继承父类之后,可以拥有到父类的某一些成员(字段和方法),根据访问修饰符来判断:
如果父类中的成员使用public和protected修饰,子类都能继承.
如果父类和子类在同一个包中,使用缺省访问修饰的成员,此时子类可以继承到
如果父类中的成员使用private修饰,子类继承不到。private只能在本类中访问
父类的构造器,子类也不能继承,因为构造器必须和当前的类名相同
记住一句话:子类继承父类的非私有成员(字段和方法),但构造器除外。
子类什么时候需要覆盖父类中的方法?
是当继承父类的某个方法不适合子类本身的特征时,子类覆盖父类中的方法
方法覆盖的规则
1. 方法签名必须相同 (方法签名= 方法名 + 方法的参数列表)
2. 子类方法的返回值类型:要么和父类方法的返回类型相同,要么是父类方法返回值类型的子类
3. 子类方法的访问权限 >= 父类方法访问权限
如果父类方法是private,子类方法不能重写。==> 重写建立在继承的基础上,没有继承,就
不能重写。
4. 子类方法中声明抛出的异常小于或等于父类方法声明抛出异常类型
super关键字的作用
在子类中的某一个方法中需要去调用父类中被覆盖的方法,此时使用super关键字
什么时候需要把父类中的方法定义成抽象方法?
当 1>该方法没有方法体 时,要把父类中的方法定义成抽象方法
2>要求子类必须覆盖该方法
抽象类应该怎么使用?可以直接使用抽象类创建对象吗?
使用abstract修饰,没有方法体,留给子类去覆盖
抽象方法必须定义在抽象类或接口中
public abstract class 类名 { }
不能用抽象类创建对象
抽象类的意义是什么?
当有一些方法需要默认实现时,使用抽象类