Java编程入门笔记(七)

大道至简——继承

为什么使用继承?

  1. 使用继承优化设计
  2. 方便修改代码
  3. 减少代码量
  4. 子类与父类是is-a关系

如何使用继承?

//编写父类
class Pet { 
        //公共的属性和方法
}
//编写子类,继承父类
class Dog extends Pet { 
		//只能继承一个父类 
		//继承关键字 extends
        //子类特有的属性和方法
}
class Penguin extends Pet { 
}
//访问父类构造方法
//在子类构造方法中调用且必须是第一句
// 使用super关键字,
super代表父类对象 
super();    
super(name);
//访问父类属性
super.name;
//访问父类方法
super.print();

不能继承的元素

  1. private成员
  2. 子类与父类不在同包,使用默认访问权限的成员
  3. 构造方法

访问修饰符
访问修饰符protected

  • 可以修饰属性和方法
  • 本类、同包、子类可以访问

访问修饰符总结
Java编程入门笔记(七)_第1张图片

多重继承关系的初始化顺序是怎样的?

父类属性
父类构造方法
子类属性
子类构造方法

方法重写的规则

  1. 方法名相同
  2. 参数列表相同参数列表相同
  3. 返回值类型相同或者是其子类;返回值类型相同或者是其子类;
  4. 访问权限不能严于父类访问权限不能严于父类

方法重载与方法重写
Java编程入门笔记(七)_第2张图片

super关键字来访问父类的成员

  • super只能出现在子类的方法和构造方法中
  • super调用构造方法时,只能是第一句
  • super不能访问父类的private成员

抽象类
抽象类不能实例化,不能生成实例对象!但是可以有构造函数!

public abstract class Pet {		
} 

抽象方法注意事项

  • 抽象方法必须在抽象类里
  • 抽象方法必须在子类中被实现
  • 如果子类也是抽象类,可以不用实现抽象方法
  • 抽象方法不能通过super关键字调用
  • Java中的abstract方法基本等同于C++中的纯虚函数

final关键字
修饰的类,不能再被继承
修饰的方法,不能被子类重写
修饰的变量将变成常量,只能在初始化时进行赋值
使用final关键字定义的变量可以保证不被修改,在Java中作为常量使用

class Penguin {
    static final String SEX_MALE="Q仔"; 
    static final String SEX_FEMALE="Q妹";
} 

final类
类不希望再被其他类继承

public final class Penguin extends Pet { 
      //…
}

final方法
方法不希望被重写

class Pet {
public final void print () { 
      //…
}
}

你可能感兴趣的:(java)