Java---05---继承
来源:互联网 发布:mac照片怎么删除 编辑:程序博客网 时间:2024/05/16 14:50
继承:
继承是对针对类之间的相交关系,使得某类可以继承另外一个类的特征和功能。被继承的现有类称之为父类(基类或超类),从现有类继承的新类称之为子类(或派生类)。由一个类可以派生出多个子类,这样就形成了类的层次关系。继承意味着“自动的拥有”。即特殊类(对象)中不必重新定义一般类中以存在的属性和行为。
继承的作用:
1.清晰的体现类之间的结构层次关系
2.减少代码和数据的重复,增强可用性。
JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,
同时一个类可以实现多个接口,从而克服单继承的缺点。
子类不能继承父类中访问权限为private的成员变量和方法。
子类可以重写父类的方法,及命名与父类同名的成员变量。
例如:
class A{public int num;public A() {super();// TODO Auto-generated constructor stub}public A(int num) {super();this.num = num;}public int show (){System.out.println("A.show() num:"+num);return 0;}}class B extends A{public int num;public B() {super();// TODO Auto-generated constructor stub}public B(int num) {super();this.num = num;}public int show (){System.out.println("B.show() num:"+num);return 0;}}class Main{public static void main (String[] args){A a = new A(10);B b = new B(20);a.show();b.show();}}
A类中已经有了 num 变量和 show() 方法,在子类B中仍然可以再定义一样的变量和方法。
Java类中的限定词:
private:类中限定为private的成员,只能被这个类本身访问。如果构造方法为private,则其他类不能实例化该类。
default:不加任何访问权限,可以被这个类本身和同一个包中的类访问。
protected:类中限定为protected的成员,可以被这个类本身、它的子类和同一个包中的其他类访问。
public:类中被限定为public的成员,可以被所有类访问。
父类中的成员被子类继承后,在子类中的访问控制方式与父类中相同,
子类虽然继承了父类的私有成员,但在子类中不能直接访问。
如果子类中出现非私有的同名成员变量时
子类要访问本类中的变量,用this
子类要访问父类中的同名变量,用super
supe的使用和this的使用几乎一致,
this代表的是本类对象的引用
super代表的是父类对象的引用
class AA{int num ;public AA(int num) {super();this.num = num;System.out.println("AA.AA() num = "+num);}} class BB extends AA{public BB(int num) {super(num);// TODO Auto-generated constructor stub}}public class Go {public static void main (String[] args){AA a = new AA(10);BB b = new BB(20);}}
输出结果为:
AA.AA() num = 10
AA.AA() num = 20
通过这个输出结果就能明确的知道 super 代表的是父类对象的引用。
当程序生成一个BB类的对象b同时调用BB的构造函数时,执行super(num)相当于执行AA的构造函数。
方法重写:
方法重写也称为方法的覆盖或方法重定义,重写是指在子类定义一个与父类某个方法完全相同的函数。函数名,参数,返回值完全相同。
第一个例子中的show()方法就是方法重写。
注意:
1.子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败;
2.静态只能覆盖静态;
3.覆盖必须一模一样,包括返回值。
class A{public int show (){System.out.println("A.show() ");return 0;}}class B extends A{public int show (){System.out.println("B.show() ");//该函数没有返回值,所以编译不通过}}
- Java---05---继承
- Java继承
- JAVA-继承
- java 继承
- Java继承
- Java 继承
- JAVA继承
- java继承
- java/继承
- java 继承
- java继承
- java继承
- JAVA-继承
- Java继承
- java 继承
- JAVA 继承
- 【继承】 JAVA
- Java继承
- Getter和Setter
- Java中守护线程的总结
- Linux内核结构
- 学习日记第二天
- linux内核编程(一)
- Java---05---继承
- jplogic之GIS搜狗地图开发案例
- hbase快速入门之hTable
- 离散事件模拟
- Git暂存区
- 用递归函数求最小公倍数,不借用gcd()
- nodejs事件发布/订阅Emitter的使用
- Java小项目点餐系统(四)之总结篇
- ScrollView 实现缩放,透明度,PageView效果