Java入门笔记(第三章 继承与派生之<2.继承性、隐藏与重写>)

一.继承性

1.概述

  1. 引入:

子类一定会继承父类的所有特点吗? 答:不一定,private不会继承,protected需要在一个包里面

  1. 信息隐藏
    就是使用访问修饰符的原因,1.对任何现实细节所作的更改不会影响使用该类的代码,2.防止用户意外删除数据 3. 此类易于使用

3.规定
在这里插入图片描述
1、private类型的属性或方法不能被继承
2、public、protected类型的属性或方法一定可以被继承
3、defalut 类型要看子类是否和父类在一个包呢。

二.隐藏与重写

1.引入

大多数情况下,子类可能只有部分适合父类的性质,倘若直接继承,那么子类就会被自动附上父类的特点,不适合实际情况

2.隐藏

  1. 条件:
    需要子类与父类的属性同名(类型不一样都可以,只要同名就行),子类对象在寻找方法或成员变量的时候,先搜索子类独有空间,再搜索父类空间
  2. 实例
    在这里插入图片描述

2.方法重写

1.方法重写的要求

两同两小一大:

两同:方法名相同 参数列表一致
两小: 子类返回值类型应该更小或者相等 子类的抛 出的异常小于等于父类的抛出的异常类
一大:子类的访问权限比父类访问权限要大和相等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.重写与重载

(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
(3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
在这里插入图片描述

4.总结

(1) 变量只能被隐藏(包括静态和非静态),不能被重写

(2) 可以用子类的静态变量隐藏父类的静态变量,也可以用子类的非静态变量隐藏父类的静态变量

(3) 静态方法(static)只能被隐藏,不能被重写;
(4) 非静态方法可以被重写;
(5) 不能用子类的静态方法隐藏父类中的非静态方法,否则编译会报错;
(6) 不能用子类的非静态方法覆盖父类的静态方法,否则编译会报错;

三.实例

import java.util.Date;
class Publication{
     protected String name;
     protected int price;
     protected String date;
     public void inputData(String name,int price,String date){
         this.name=name;
         this.price=price;
         this.date=date;
     }
     public  void display(){
         System.out.println(name+" "+price+" "+date);
     }
}
class Book extends Publication{
    private int page;
    public void inputPage(int page){
        page=100;
    }
    public void display(){
        System.out.println(name+" "+price+" "+date+" "+page);
    }
}
public class Hello {
    public static void main(String args[]){
        Publication p=new Publication();
        p.inputData("Publication",120,"1999-2-1");
        p.display();
        Book b=new Book();
        b.inputData("Book",30,"1999-1-1");
        b.inputPage(300);
        b.display();
    }

}

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值