标签:直接 object 就是 logs 相关 另一个 java项目 poi 抽象方法
前提:
一个类中包含了若干成员属性和成员方法;在不同的类中,成员属性和成员方法是不相同的。
疑问:
已有类A,想创建类B;当两个类的内容基本相同的属性、行为基本相同,如何里实现代码的重用?
解答:
Java提供继承来实现代码的重用率,提高编程效率。
继承:就是从已有类的基础上产生一个新的类。
已有类 | 新的类 |
---|---|
父类 | 子类 |
超类 | 派生类 |
基类 |
解释:
如果一个类B继承自另一个类A
Java
中的单重继承机制:一个类只能有一个直接基类Object
类是所有Java类的顶级基类final
修饰的类不能有派生类(String
是典型特例)//class 子类名 extends 父类名{
// //扩充的属性和方法
//}
//父类
//猫
public class Cat{
//属性
private String color;
private String beard
//方法
public void catchMouse(){
System.out.println("捉老鼠");
}
}
//子类
//缅因猫
public class MaineCoon extends Cat{
//补充的属性
private String shape;
//补充的方法
public void spoiled(){
System.out.println("撒娇");
}
}
访问权限修饰符 | 本类内 | 子类内 | 本类和子类外 |
---|---|---|---|
public |
|||
private |
|||
protected |
同包不同包 |
修饰符
protected
基类中的某个方法或者属性,只允许派生类或者同包中的类访问.
在类外不能访问
private
类型的成员。//父类
public class Cat{
//子类可直接访问
public int id;
project String name;
//无法直接访问
private Color color;
//通过公有接口访问
public void setColor(Color color){
this.color = color;
}
public Color getColor(){
return color;
}
}
派生类继承自基类,当实例化派生类对象时,必须调用基类的构造方法,再调用派生类的构造方法。
JVM默认调用基类的无参构造方法,若基类没有无参构造方法,则报错
派生类构造方法中没有显式调用基类构造方法,则默认调用基类的无参构造方法。
在派生类中显式调用基类的构造方法,需要使用super
关键字
用于引用基类中的属性或方法
private
属性super()
super(参数)
super.方法名(参数)
调用基类非private
方法,位置不固定//父类
//猫
public class Cat{
//属性
public int id;
private String color;
private String beard
//构造方法
public Cat(){
this.color = "橘色";
this.beard = "长的";
}
//方法
public void catchMouse(){
System.out.println("捉老鼠");
}
}
//子类
//缅因猫
public class MaineCoon extends Cat{
//补充的属性
private String shape;
public MaineCoon(){
super();//第一行
//调用属性
//只能调用非private
super.id = 1;
//方法
super.catchMouse();
}
//补充的方法
public void spoiled(){
System.out.println("撒娇");
}
}
super()
只能放在派生类构造方法的第一行super
只能访问基类中非private
的属性和方法派生类继承基类的属性和方法,除了可以新增成员外,还可以对基类的方法做修改。
方法重写: 派生类对基类中定义的方法进行重新实现。
作用:就是在不改变原来代码的基础上可以对其中任意模块进行改造。
final
修饰的基类方法学习完继承后,已经能用代码实现一些小项目
对于一个合格的项目来说,包是至关重要的
通过包对类进行分类,可以极大简化整理项目代码
继承作为Java语言三大特性,地位非常重要。
了解完继承后,不如再看看同样重要的其他特性
封装和多态,期待你的批评指导??
标签:直接 object 就是 logs 相关 另一个 java项目 poi 抽象方法
原文地址:https://www.cnblogs.com/occlive/p/13378037.html