黑马程序员技术交流社区
标题:
private修饰的父类成员子类可以继承吗?
[打印本页]
作者:
叶龙
时间:
2014-10-21 20:36
标题:
private修饰的父类成员子类可以继承吗?
网上搜了一些答案,理解的不太清晰,哪位帮忙讲一下
作者:
。冰封
时间:
2014-10-21 20:40
父类可以对外提供一个访问方法,对其进行访问。
作者:
亦然半夏
时间:
2014-10-21 21:18
不可以继承,子类可以继承父类的非私有属性和方法
作者:
☆枫の云
时间:
2014-10-21 21:19
不行的,可以用protected
作者:
nerveva2000
时间:
2014-10-22 06:42
有四种权限 1 public 2 默认权限 3 protected 4private
继承关系的话,子类只能访问到父类的前三种权限,也就是 1 public 2 默认权限 3 protected
第四种4private ,默认情况下,只有父类内部可以访问,继承关系也不能访问。
如果要子类访问4 private,那就要提供一个方法,赋予1 public 2 默认权限 3 protected 三个权限中的一个,供子类访问用。
作者:
康师傅-蛋黄派
时间:
2014-10-22 07:25
当复习一遍,都忘掉了呢
作者:
HM2014nuli
时间:
2014-10-22 07:48
子类是继承不到的,因为由于父类将成员私有化了,所以子类在继承的时候根本就不知道父类有这个成员
作者:
杨佳名
时间:
2014-10-22 09:20
有搜索的功夫,demo一下就知道了。自己探寻代码中的快乐。
作者:
Fightingforever
时间:
2014-10-22 09:33
不可以的 直接试一下就可以
class Fu
{
private int num=4;
String name="lisi";
}
class Zi extends Fu
{
private int age=10;
public void method()
{
System.out.println(num);
}
}
class Demo
{
public static void main(String[] args)
{
Zi z=new Zi();
z.method();
}
}
复制代码
提示是:num可以再Fu中访问private
作者:
yun15120
时间:
2014-10-22 10:18
private是其他类看不到,未知的,故而不能继承吧
作者:
EDDY_Liang
时间:
2014-10-22 10:19
只要记住私有的只能在本类中使用就O了
作者:
饼子
时间:
2014-10-22 13:51
私有成员是属于父类自己的,子类不能直接继承。但是可以通过自定义方法获取。
作者:
diaolinan
时间:
2014-10-22 16:45
知识点,果断收藏
作者:
cvnmklop
时间:
2014-10-22 17:04
这个问题我用反射来证明下首先来一段子父类代码
package Try;
public class Student extends Person {
String name = "aa";
}
class Person {
private int age =5;
}
复制代码
然后用反射来看看Student里有没有被private修饰的age,以下代码有用到junit来调试。顺便就是练习反射了:lol
package Try;
import java.lang.reflect.Field;
import org.junit.Test;
public class Try {
@Test
public void test() throws Exception{
Student st = new Student();
Class clazz = Class.forName("Try.Student");
Field fi =clazz.getDeclaredField("age");
fi.setAccessible(true);
int age = (Integer)fi.get(st);
System.out.println(age);
}
}
复制代码
运行的时候就会抛出异常:java.lang.NoSuchFieldException: age
这里就可以看出子类没有继承父类的age
作者:
mingtianrsm
时间:
2014-10-22 17:55
我感觉,是可以继承的,不过不能访问。可能有点迷糊,其实我也不知道这算不算继承。我只能说即使是private了,但是,继承之后其实子类还是拥有了,只是不能直接调用而已。我的意见是有没有继承,和可不可以直接调用应该区分对待。就像一个学生类继承了一个Person类,Person类的属性都是私有的,那你不能说学生类没有继承它的属性。毕竟我们继承父类的属性不是要在子类内部调用的,而是要在其它类里使用的,当我们创建子类对象后,连子类自身的私有属性和方法也不能直接调用,我们总不能说它没有这些属性和方法吧?所以,要把这两个概念区分清楚,私有和继承是没有直接联系的,私有是对外部访问的限制。打个比喻,比如家里的东西,老爸的钱锁在柜子里面,这就相当于私有,儿子继承了父亲的财产,那么他能当是继承了这个家所有的东西,难道因为钱在柜子里就不是了吗?这是父类提供的方法其实就是老爸给的柜子钥匙罢了。
作者:
Sxxjava
时间:
2014-10-22 18:17
不可以继承,子类可以继承父类的非私有属性和方法
作者:
皮三藏
时间:
2014-10-22 21:33
父类的私有域,子类是不能访问和继承的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2