您的位置:首页 > 职场人生

黑马程序员-----java 继承

2014-02-20 16:54 120 查看
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流!
----------------------

一、继承的特点

1、单继承性,也就是说java类只能有一个直接父类,但是java类可以拥有无限个间接父类;

2、通过extends关键字实现继承

3、java的子类不能直接调用父类的构造方法

4、java.long.object是所有类的父类

二、方法的重写

要求:

1、方法名相同,形参列表相同、返回值相同;

2、子类方法声明抛出的异常类应比父类方法抛出的异常类更小或相等;

3、子类的访问权限应比父类访问权限更大或相等;

注意:

1、方法的重写中的两个方法要么都是类方法要么都是实例方法;

2、方法的重写不能重写父类中用private修饰的方法

三、super关键字的使用

1、作用:子类方法中调用父类被重写的实例方法;

注意:

如果被覆盖的是类属性,在子类方法中可以通过父类名调用访问被覆盖的类属性;

2、super关键字调用父类的构造方法

子类构造方法执行体的第一行代码使用super显示调用父类构造方法,系统将根据super调用里传入的参数列表调用父类对应的构造方法;

注意:

1、子类构造方法中既没有super调用也没有this调用,系统将会在执行子类构造方法之前隐式调用父类无参的构造方法;

2、创建任何java对象,最先执行的总是java.long.Object类的构造方法;

例:

public class Animal{

public String name;

public  int age;

public animal(String name,int age){

this.name=name;

this.age=age;

}

}

public class Bird{

public boolean mao;

public Bird(String name,int age,boolean mao){

super(name,age);

this.mao=mao

}

}

四、多态

父类对象指向子类对象

注意:

  1)父类型的对象可以“指向”(引用)其子类的对象。但它不能访问其子类中新增加的成员(成员变量和成员方法)。

  2)可以使用instanceof关键字来判断一个对象变量所“指向”(引用)的对象是否属于某个类。  语法:对象变量名 instanceof 类名

  3)子类的对象可以直接当作父类的对象使用,称作向上转型。它是自动进行的。

  4)从父类的对象到子类的对象的转换叫向下转型,向下转型要用强制类型转换。

 方法多态需要满足的条件  ---> 面向父类编程

  1) 要有继承

  2) 要有方法的重写

  3) 要有向上转型

  4) 要有父类对象调用被重写的方法

五、初始化块

1、定义:初始化块是java类中的成员,用于对对象进行初始化操作;一个类里可以有多个初始化块,先定义的先执行;

2、格式:

[修饰符]{
}

注意:

1.初始化块的修饰符只能是static,被称为静态初始化块。初始化块中的代码可以是任何可执行性语句;

2、初始化块没有名称、标识,因此无法通过类和对象来调用。

3、初始化块只能在创建对象时自动执行而且字执行构造方法之前执行

3、静态初始化块

类加载后可以使用静态初始化块对整个类执行某些初始化操作;

注意:

1、静态初始化块在类初始化阶段执行,而普通初始化块在创建类对象是才执行;

2、在一个类中静态初始化块只能执行一次,而普通初始化块没创建一次对象就执行一次;

3、静态初始化块只能对类属性进行初始化,需要遵循静态成员不能访问非静态成员;

五、单列类

1、定义

一个类始终只能创建一个实例则这个类被称为单例类;

2、创建单例类:

该类的构造方法用private修饰;

提供一个public方法作为该类的访问点,且方法必须使用static关键词修饰(因为调用该方法之前还不存在对象只能使用类对用);

3、单例类示例

public class A{

private static A a;

private A(){}

public static A B(){

if(a == null){

a = new A();

}

return a;

}

}

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流!
----------------------

详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: