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

java继承

2017-06-29 00:00 148 查看
1:java继承就是子类拥有父类的一切(感觉就是为了偷懒),子类还可以扩大父类的权限

2:子类重写父类的时候,子类权限>=父类,静态只能覆盖静态,

子类第一行有隐试super()访问父类中默认的构造方法,构造方法至少有一个会去访问父类

父类中数据子类可以直接获取,对象在建立的时候,会先查看父类是如何初始化的,再初始化子类的构造方法
属性只能被继承,不能被重写,因为属性是在编译阶段就被确定好了的
3:重载只看同名函数的参数列表(类型,顺序,个数),重写的返回类型方法名参数列表要一样,就方法主体不一样
package extendsDemo;

public class Animal {
String name = "Animal";

public Animal() {
System.out.println("animal constr");
}

public Animal(String name) {
System.out.println(name + "animal constr");
}

public void move() {
System.out.println("animal move");
}

public void run() {
this.move();//执行的是子类的move方法,this指当前对象
}                //可以写成move();这个是默认的this
//都是先在子类里面找,找不到就父类里面找

public void eat() {
System.out.println("eat " + name);
}/*即使改成this。name,输出也是eat dog,因为属性只能被继承*/

}

package extendsDemo;

public class Dog extends Animal {
String name = "dog";

public Dog() {
/*super(name);错误的--子类还没创建就传就给了父类,这句话
相当于把子类当前对象name传给了父类,就是在创建你父亲时
就把你儿子东西给了他,可以换成super(xxx)。
因为这个不是当前对象的全局变量*/

System.out.println("dog constr");
}

public void move() {
System.out.println("dog move " + super.name);
}//可以在子类使用super来访问父类,就是要使用父类的name
//如果想再子类调用eat方法,直接在方法主体加上eat()
public void move(String name) {
System.out.println("dog move");
}
}


package extendsDemo;

public class TestDog {

public static void main(String[] args) {
Dog dog = new Dog();
dog.run();
dog.eat();
}

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