子类继承父类后重载protected方法提升访问权限为public

某汽车公司有一款新车上市,但该公司规定这款车必须由公司内部人员驾驶,那么也就是这样

 代码如下 复制代码

public class NewCar{

 protected void drive() {
 // drive the car
 }
}

不过你说我买来一辆车总不能让这汽车公司的人来为我开车吧,所以这车的驾驶功能应该对我开放了才行,当然,只有属于我的车我才可以这样做,所以

 代码如下 复制代码

class MyNewCar extends NewCar {

 @Override
 public void drive() {
 // do my own drive
 }

}

这样,我自己的车就可以让任何人来驾驶了,包括借给哥们,或者送给女朋友(她们可能更希望你开车带她去兜风)

 代码如下 复制代码
NewCar car = new NewCar();
car.drive();// no no no 这车可不是我的,不能随便开的
MyNewCar myCar = new MyNewCar();
myCar.drive();// ok 随便开,别超速哦~

所以呢,java设计这个可以提高权限的做法就是为了让子类可以自己去决定它的方法是否可以开放给调用者。 当然了,你如果把原本父类public的方法给protected了,那么很抱歉,编译不通过的。原因显而易见,比如:

 代码如下 复制代码
NewCar car = new MyNewCar();
car.drive();//

这这这,这车是我的啊,怎么还不让我开?对不起,你有证据么 -_-#

时间: 2024-09-20 05:54:59

子类继承父类后重载protected方法提升访问权限为public的相关文章

子类继承父类实现父类的代理方法

子类继承父类实现父类的代理方法 父类提供虚函数(OC中称为代理方法),子类继承后实现虚函数来实现特定的功能. 父类方法: NumberCount.h 与 NumberCount.m // // NumberCount.h // YXMWeather // // Created by XianMingYou on 15/2/18. // Copyright (c) 2015年 XianMingYou. All rights reserved. // #import <Foundation/Foun

子类继承HibernateDaoSupport后如何注入SessionFactory

子类继承HibernateDaoSupport后,由于HibernateDaoSupport,setSessionFactory是使用final修飾的,無法重寫,沒有辦法使用註解的方式注入sessionFactroy public final void setSessionFactory(SessionFactory sessionFactory) {         if (this.hibernateTemplate == null || sessionFactory != this.hib

java语法-子类继承父类关于super关键词的问题

问题描述 子类继承父类关于super关键词的问题 子类继承父类关于super关键词的问题 super ( ) 和super eat ( )的区别 是不是super( )只是复写了父类的构造方法 super eat ( )只是复写了父类的eat方法 那么super.eat( )这种写法是错误的么 我记得有super.╳╳╳这种写法的 解决方案 你看到的应该是调用父类的内嵌类.

wpf c#-请教:WPF中 子类继承父类的INotifyPropertyChanged的问题

问题描述 请教:WPF中 子类继承父类的INotifyPropertyChanged的问题 父类实现了INotifyPropertyChanged接口,子类数据改变时如何驱动父类的INotifyPropertyChanged? 父类实现接口方法: public event PropertyChangedEventHandler PropertyChanged; /// <summary> /// 数据驱动 /// </summary> /// <param name=&quo

java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法

问题描述 java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法 创建子类对象时,Student s = new Student(""school""); 该构造方法中没有显示调用父类的构造方法,但还是编译成功了,该构造方法调用自身的构造函数,此构造函数中有调用父类的构造方法,执行成功的原因是什么 解决方案 不用显示调用,会自动执行父类的构造 解决方案二: 子类的构造方法中,如果没有显示调用父类的构造方法,会默认调用父类无参的构造方法.类似于

PL/SQL小技巧一个:在子类中怎么调用父类被重载的方法

技巧 在C++和Java中,这是非常容易实现的C++是:父类名::被重载的方法(参数表), 比如:      ancestorclass::name({arguments});而在Java中,可以用super代替父类,如这样实现      Super.name({arguments}); 而在Oracle 9i Release2中都没实现这样的功能,当然我们可以用其它办法来实现这样的功能. 父类对象类型Create or Replace Type parent as object (      

java中子类继承父类,程序运行顺序的深入分析_java

我们经常在项目中使用继承,但是往往不太明白,程序运行的顺序以及原理,尤其是使用上转型对象的时候,以及父类子类中都有static变量和方法时,不知道先运行谁.我也是写了一个例子.总结了一下. 复制代码 代码如下: 父类:public class TestStatic {     public static String name="china";     {       System.out.println("========方法体========");    }  

关于子类继承父类的问题。。

问题描述 有一个抽象MainServlet类,继承了HttpServlet.又写了一个普通类AdminServlet,继承了MainServlet.当请求指向AdminServlet时,又走了MainServlet中的post方法,很是不解啊...另外,在post方法中打印this,竟然是AdminServlet的hash值.为什么啊???这是代码,MainServlet:publicabstractclassMainServletextendsHttpServlet{@Overridepubl

java继承-java关于子类继承的问题

问题描述 java关于子类继承的问题 在java中子类可以继承父类的对象吗 子类都可以继承父类的哪些功能 解决方案 令人费解的java继承问题java笔试问题(继承)java 中 集合类相关问题 解决方案二: 继承父类对象是什么意思?子类继承父类所有的属性和方法. 解决方案三: 子类当然可以继承父类,继承,顾名思义,就是子类拥有父类的所有方法和属性,此外,在子类中还可以定义一些父类中没有的方法,.当子类继承父类后, 可以直接调用父类的方法.不用再去创建,定义.这样,大大增加了代码的重用率,提高了