您的位置:首页 > 编程语言 > Java开发

Java基础一(继承和多态)

2017-03-18 10:43 330 查看


1.继承

Java中类只有单继承(子类无法继承父类的构造方法),不同于C++中多继承,一个子类只能有一个父类。多继承会让Java整体结构变得混乱。
Java中实现接口方法实现多继承、多态。
     
继承第二个特性:重写 Vs 重载:
重写(override):子类对父类的方法的覆盖,对此有之下要求:
1).子类必须与重写方法具有相同的方法名称,相同参数列表和返回值类型;如果子类值参数列表不同于父类即使两者有相同的函数名称,只能算作是新的方法。
2)子类方法不能够缩小父类的访问权限,但是可以扩大权限:
父类 用public方法,子类不能用protect或者private修饰重写方法,但是父类protect方法,子类可以用public方法;      如果想访问父类方法
使用关键字 super
重载:一个方法名称有多个方法,构造函数重载(overload)有不同的参数列表。


2.多态
多态:通过指向父类的指针,调用不同子类中实现的方法 ,Java自动判断引用不同子类。
package ExtendsDemo;
/*使用多态*/
public class Anmial {

String name;
int age;

//访问内部数据的方法
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

//动物叫声
public void cry()
{
System.out .println("动物会叫");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat cat=new Cat();
cat.cry();

Dog dog=new Dog();
dog.cry();

/********出现多态情况************/
Anmial an=new Cat();
// Cat 属于Anmial父类一个子类,这里new开辟一个对象没有问题
//通过指向父类调用不同子类方法
an.cry();
an=new Dog();
an.cry();
}

}

class Cat extends Anmial
{
public void cry()
{
System.out.println("Cat cry");
}

}

class Dog extends Anmial
{
public void cry()
{
System.out.println("Dog cry");
}

}


结果输出:
Cat cry
Dog cry
Cat cry
Dog cry

事实上,在一些实际过程中出现将子类强制转换成父类,子孙类必须要拥有父类的所有的方法,同时子类比父类更加的详细,所以子类转换成父类是可以的,但是不能够让父类转换成子类。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: