黑马程序员技术交流社区
标题:
子类中能不能继承父类的私有变量和方法吗吗
[打印本页]
作者:
邵阳
时间:
2012-11-20 21:16
标题:
子类中能不能继承父类的私有变量和方法吗吗
本帖最后由 邵阳 于 2012-11-22 20:34 编辑
子类中能不能继承父类的私有变量吗
class a
{
private int x;
private String y;
privatr void write()
{}
}
class c extends a
{
}
作者:
奚华
时间:
2012-11-20 21:32
可以继承,但是继承后在子类中不能直接访问!
作者:
金鑫
时间:
2012-11-20 21:34
private关键字所修饰的成员被封装之后,只在本来中被访问,目的是不希望被外界所访问。如果能被子类继承后访问的话,就打破了封装性了,所以是不能被直接访问的。
如果想访问父类中私有的成员,就在父类中定义一个方法,在方法中将父类中北封装的对象返回,让外界访问
public int getInt()
{
return x;
}
public String getString()
{
return y;
}
当父类中的方法用private来修饰时,子类无法重写。如果子类中有一个方法与父类方法名相同,参数列表以及返回值都相同,依然不是重写,只是在子类中重新定义了一个方法,可以加static关键字。
比如你的例子中,在子类也定义了一个方法privatr void write(){},他与父类无关,只是在子类中定义了一个与父类一样的方法而已,但是不是重写,更不是从父类继承过来的
作者:
王震阳老师
时间:
2012-11-20 21:43
楼主的问题是子类是否可以继承父类的private修饰的成员变量和方法。答案是唯一的:不能继承父类的私有变量和方法。这是private限制的缘故。
作者:
张硕
时间:
2012-11-20 21:51
子类不能继承父类私有成员变量,只能通过继承父类后调用里面的成员方法来读、写成员变量,而父类里面的成员方法一般定义为public的,作为封装后对外的接口,如果也定义成私有的private,那么也不能被子类调用
作者:
杜正冬
时间:
2012-11-20 22:11
私有变量需要对外提供访问方式
子类通过get或set方法访问 如果有子类继承下面的代码 就可以通过get和set方法访问
package com.itheima;
public class Test5 {
/**
* 题目:定义一个学生类, 需要有姓名, 年龄, 考试成绩三个成员属性.
* 属性(成员变量)需要私有并提供get, set方法, 可以通过构造函数进行初始化.
*/
private String StudentName; // 学生姓名
private int StudentAge; // 学生年龄
private String StudentScore; // 考试成绩
//空参数的构造函数
public Test5() {
}
//构造方法
public Test5(String studentName, int studentAge, String studentScore) {
super();
StudentName = studentName;
StudentAge = studentAge;
StudentScore = studentScore;
}
public String getStudentName() {
return StudentName;
}
public void setStudentName(String studentName) {
StudentName = studentName;
}
public int getStudentAge() {
return StudentAge;
}
public void setStudentAge(int studentAge) {
StudentAge = studentAge;
}
public String getStudentScore() {
return StudentScore;
}
public void setStudentScore(String studentScore) {
StudentScore = studentScore;
}
public static void main(String []args){
Test5 t=new Test5("张三",20,"优秀");//初始化
System.out.println("----姓名:"+t.StudentName+"----年龄:"+t.StudentAge+"-----成绩:"+t.StudentScore+"-----");
}
}
作者:
王斌
时间:
2012-11-22 13:26
子类继承父类的方法,但是不能继承父类被private 修饰的方法和变量,这和访问的权限有关,
public class A {
private int test = 1;
class B extends A {
public int test = 2;
public B(int test) {
System.out.println(super.test);
System.out.println(this.test);
System.out.println(test);
}
}
public static void main(String[] args) {
new A().new B(3);
}
}
作者:
卞潇洋
时间:
2012-11-22 13:57
子类中能不能继承父类的私有变量,答案是肯定不能继承的,private只能供它本类使用,如果继承以后,违反了面向对象的原则,楼主可以看看private、protected、public以及final之间的区别
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2