t i, String s){} //正确,带参构造方法
public Sample(String s,int i){} //正确,带参构造方法
private Sampla(int i){ //错误:名称与类名不相同
x=i++;
}
private void Sampla(int i){ //正确,但不是构造方法
x=i++;
}
}
第二章 面向对象的Java实现-继承和多态
生活中的继承
子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性
子类自动继承父类的属性和方法,子类中不再存在重复代码
使用继承,可以有效实现代码复用
在Java语言中,用extends关键字来表示一个类继承了另一个类,例如:
public class AccpJavaTeacher2 extends AccpTeacher {
//其余代码省略
}
在父类中只定义一些通用的属性与方法,例如:
public class AccpTeacher {
private String name; // 教员
private String school; // 所在中心
public AccpTeacher(String myName, String mySchool) {
//初始化属性值
}
public void giveLesson() { //授课方法的具体实现 }
public void introduction() { //自我介绍方法的具体实现 }
}
子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法
public class AccpTeacher {
private String name; // 教员
private String school;// 所在中心
public AccpTeacher (String
myName, String mySchool) {
//初始化属性值
}
public void giveLesson() {
//授课方法的具体实现}
public void introduction() {
//自我介绍方法的具体实现 父类中的属性和方法可以被子类继承
}
}
public class AccpJavaTeacher2 extends AccpTeacher {
public AccpJavaTeacher2(String myName, String mySchool) {
super(myName, mySchool);
}
public void giveLesson(){
System.out.println("启
动Eclipse");
super.giveLesson();
}
}
由于giveLesson()方法与父类的实现有所不同,因此重写了该方法
方法重写:子类和父类的方法具有相同的名称、参数
列表、返回类型和访问修饰符
如何实现继承
子类的构造方法中,通过super关键字调用父类的构造方法
public class AccpJavaTeacher2 extends AccpTeacher {
public AccpJavaTeacher2(String myName, String mySchool) {
super(myName, mySchool); //通过调用父类的构造方法,完成对属性值的初始化
}
}
方法重写后,通过super关键字调用父类的方法
public class AccpJavaTeacher2 extends AccpTeacher {
public void giveLesson(){
System.out.println("启动 Eclipse");
super.giveLesson();
}
}
一切类的“祖先”——Object
在Java 中,所有的
Java类都直接或间接地继承了java.lang.Object类
在Eclipse中调用MyObject对象的成员,会自动弹出继承自Object的所有方法
为什么需要多态
使用多态之后,当需要增加新的子类类型时,无需更改总部类,
程序的可扩展性及可维护性增强
什么是多态
简单来说,多态是具有表现多种形态的能力的特征
同一个实现接口,使用不同的实例而执行不同操作
如何实现多态
1、子类重写父类的方法
2、编写方法时,调用父类定义的方法
3、运行时,根据实际创建的对象类型动态决定使用哪个方法
例题1:给定如下Java代码,编译运行后,输出结果是什么?
class Base {
public String name;
public Base(){
name = "Base";
}
public Base(String pName){
name = pName;
}
public void method(){
System.out.println(name);
}
}
class Child extends Base{
public Child(){
super("Child1");
name="Child2";
}
}
public class Sample {
public static void main(String[ ] args) {
Child c = new Child();
c.method();
}
}
控制台输出:Child2
例题2:给定如下Java代码,编译运行后,输出结果是什么?
public class AccpTeacher {
public void giveLesson(){
System.out.println("知识点讲解");
}
}
public class AccpDBTeacher extends AccpTeacher {
public void giveLesson(){
System.out.println("启动 SqlSer