java继承多态2

本文详细介绍了Java中的继承机制、如何使用super和this关键字、继承的作用以及多态的概念,包括重写规则、向上转型和动态绑定。重点强调了如何在子类中重写父类方法并确保合法性。
摘要由CSDN通过智能技术生成

1.7

super和this都可以在成员方法中

this                                           super

this.成员变量                            super.成员变量

this.成员方法

this( )调用方法

当前对象

1.8什么是继承?继承有什么作用?

继承是将共性进行抽取,从而达到对代码的复用作用。

在dog和cat里面加上加上extands 对anmial进行代码复用。

1.8.1在子类当中,访问父类的成员方法和成员变量

1.同名的成员变量

2.不同名的成员变量

优先访问自己的,其次访问父类的。

1.8.2super指定访问父类的成员变量和成员方法----访问父类的构造方法

不能在静态方法中使用super

1.9子类构造方法

1.要放在第一行

2.当子类继承父类之后,在构造子类对象的时候,一定要先帮父类进行构造。

2.0继承关系上

父类和子类都包含静态代码块&实例代码块&构造方法

向上转型

2.1多态      多种形态??


通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生不同的状态。

同一个人  对待不同人,表现得形态是不一样的。

2.1.1要想实现多态,需要满足几个条件:

1.继承关系-》向上转型

2.子类和父类   有同名的   覆盖/重写    方法

3.通过父类对象的引用   去调用这个重写方法

完成以上三个部分,就会发生动态绑定   而动态绑定是多态的基础

结论:通过父类引用   只能调用父类自己特有的成员   方法或者成员变量。

2.1.2向上转型

子类------向上转型——父类

 2.1.3常见的可以发生向上转型的三个时机

1.直接赋值

Animal  animal =new  Dog (name:"yuanyuan",age:19);

2.方法的参数   传参的时候向上转型

public static void func1(Animal animal){

}
public static void main(String[] args){

        Dog dog =new Dog(name:"yuanyuan",age:19)
        func1(dog);
}

3,返回值   向上转型

public static Animal  func2(){
       
              Dog dog =new Dog(name:"yuanyuan",age:19);
              return dog;
}

2.1.4重写

如果在继承关系上,满足这三点,

1.方法的返回值一样2.方法名一样3.方法的参数链表一样 --( )  那么就说这两个方法是重写

public void eat(){

       System.out.println(this.name+"正在吃饭!");
}

父类

public void eat(){

       System.out.println(this.name+"正在吃狗粮!");
}

子类
Animal   animal=new  Dog(name:"圆圆",age:19);
animal eat( );

此时忽然变成了调用子类的eat

我们把这个过程叫做动态绑定-----   程序运行的时候,绑定到了子类的eat

重写(override):也称覆盖。重写是对子类对父类非静态,非private修饰,非final修饰,非构造方法等的实现重新编写,返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义自己的行为。也就是说子类能够根据需要实现父类的方法。

注解  @overrside  起一个检测作用

实现重写:

1.最基本的    返回值   参数列表必须事一样的

2.被重写的方法的访问修饰限定符   在子类中要大于等于父类的

private  默认的    protected   public

3. 被private修饰的方法是不可以被重写的

4.被static  final 修饰的方法是不可以 被重写的

协变类型   返回值构成父子关系

重写的规则

1.子类在重写父类的方法时,一般必须与父类方法原型一致:返回值类型   方法名   参数链表必须完全一致

2,被重写的返回值类型可以不同,但是必须具有父子关系的。

3.访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类方法被public修饰,则子类方法就不能声明为protected

4。父类被static private修饰的方法,构造方法都不能被重写。

5,重写的方法 可以用@Override  注解来显式指定,有了这个注解能帮我们进行一些合法性校验,例如将方法名拼错了,此时编译器就会发现父类中没有该方法,编译报错,无法构成重写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值