Java学习之继承

继承(inheritence)

1.java是单继承的,即一个类只能继承另一个类(被继承的叫父类,继承的叫子类),java中继承使用extends关键字。

例如:

//继承的结构是:子类名 + extends + 父类名

//子类:

public class Child extends Parent {

public Child() {

。。。。。。。。。

}

publicstatic void main(String[] agrs) {

Childchild = new Child();

}

}

//父类:

class Parent {

。。。。。。。。。

}

}

2.当生成子类对象时,java默认先调用父类的不带参数的构造方法,然后执行该构造方法,生成父类的对象;然后去调用子类的构造方法,生成子类的对象。(要想生成子类的对象,首先要升成父类的对象,没有父类对象就没有子类对象)。

要想改变这种默认调用方试有两种途径:

1)给父类加一个不带参数的构造方法;

2)在子类中使用super(参数值)关键字。(表示对父类对象的引用)super和this一样,必须是构造方法的第一条执行语句,前面不能有任何其他可执行语句。

例如:

1)

//继承的结构是:子类名 + extends + 父类名

//子类:

public class Child extends Parent {

public Child(){

System.out.println("child");

}

public static void main(String[] agrs) {

Child child = new Child();

}

}

//父类:

class Parent {

public Parent(int i) {

System.out.println("parent");

}

public Parent() {

System.out.println("noargs parent");

}

}

2)

//继承的结构是:子类名 + extends + 父类名

//子类:

public class Child extends Parent {

public Child(){

super(1);

System.out.println("child");

}

public static void main(String[] agrs) {

Childchild = new Child();

}

}

//父类:

class Parent {

publicParent(int i) {

System.out.println("parent");

}

}

3.关于继承的三点:

1)父类有的特征,子类全有;

2)父类没有的,子类可以增加;

3)父类有的,子类可以改变。

4.关于继承的注意事项:

1)构造方法不能被继承;

2)方法和属性可以被继承;

3)子类的构造方法默认地调用父类的不带参数的构造方法;

4)当父类没有不要带参数的构造方法是,子类需要使用super来调用父类的构造方法,super指的是对父类的引用;

5)super和this一样必须是构造方法中的第一行可执行语句。

5.方法重写(Override):又叫做覆写,子类与父类的方法的返回类型一样,方法名一样,参数一样,这样我们就说子类与父类的方法构成了重写关系。

6.方法重写与方法重载之间的关系:重载(继承关系)发生在同一个类内部的两个或多个方法。重写(平行关系)发生在父类与子类之间。

7.当两个方法形成重写关系时,可以在子类方法中通过super.run()形式调用父类的run()方法,其中supe.run()不必放在第一行语句,因此此时调用子类的run()方法是根据程序的逻辑决定的。

//同时调用子类和父类中的方法

//方法一

public class InheritenceTest{

public static void main(String[] agrs) {

Dog dog = new Dog();

dog.run();

dog.run(1);

}

}

class Animal {

public void run() {

System.out.println("animal is running");

}

}

class Dog extends Animal {

public void run(int i) {

System.out.println("dog is running");

}

}

//方法二

public class InheritenceTest{

public static void main(String[] agrs) {

Dog dog = new Dog();

dog.run();

}

}

class Animal {

public void run() {

System.out.println("animal is running");

}

}

class Dog extends Animal {

super.run();//调用父类的run方法

public void run() {

System.out.println("dog is running");

}

}

8.在定义一个类的时候,如果没有显式指定该类的父类,那么给类就会继承于java.lang.Object类(JDK提供的一个类,Object类是Java中所有类的直接或间接父类)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值