A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

而静态是肯定能够继承的。
  1. class StaticDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Father f = new Father();//建立父类对象
  6.                 Son s = new Son();//建立子类对象
  7.                 s.getName();
  8.         }
  9. }
  10. class Father
  11. {
  12.         private String name = "张三";
  13.         public static void getName()
  14.         {
  15.                 System.out.println("这是静态函数");
  16.         }
  17. }
  18. class Son extends Father
  19. {
  20.         //这里继承了父类的Private成员name
  21.         //这里继承了父类中的getName()方法
  22. }
  23. /*
  24. 程序编译会出现以下结果:
  25. 这是静态函数

  26. */
复制代码
回复 使用道具 举报
private和对象除外
回复 使用道具 举报
MissMr. 发表于 2015-6-5 00:35
private和对象除外

我看了很多的回复 有说可以也有说不可以的  我已经晕了
回复 使用道具 举报
说实话我也不太清楚,和楼主一起学习
回复 使用道具 举报
会的,继承不是使用父类,而是定义了和父类想同的东西,只为理解而如此说的 不严密
回复 使用道具 举报
君子无醉 来自手机 中级黑马 2015-6-5 15:39:50
26#
对于权限修饰符来说  只有private修饰的变量不能被继承,这个变量只属于定义它的那个类拥有,是私有的。而其他修饰符修饰的变量,如static  final修饰符修饰的变量,虽然有一定的特别之处,比如static修饰的变量是子类父类共享的  既可以通过父类类名调用,也可以通过子类名调用,或者通过子类 父类的对象调用,final修饰的变量可以被继承,但是这个变量就属于常量了 只能使用,不能修改(被赋值)。final修饰类的话,类不能被继承,修饰方法的话,这个类被继承后,方法不能被重写。。兄弟,我这边没有网 手机给你打的,而且给你举的例子都是流量上传,求分

IMG_20150605_152109.jpg (44.7 KB, 下载次数: 291)

IMG_20150605_152109.jpg

IMG_20150605_152149.jpg (33.63 KB, 下载次数: 299)

IMG_20150605_152149.jpg
回复 使用道具 举报
君子无醉 来自手机 中级黑马 2015-6-5 15:52:58
27#
补充一句话 没打上,static final修饰的变量,继承后虽然有一定的特别之处,但是都是可以被继承的 也就是除了private修饰的变量,别的修饰符修饰的变量 都可以被继承!
回复 使用道具 举报
君子无醉 发表于 2015-6-5 15:52
补充一句话 没打上,static final修饰的变量,继承后虽然有一定的特别之处,但是都是可以被继承的 也就是除 ...

你说 被只要被private修饰的就不会被继承
  1. public class Test {

  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub

  4.                 Student s=new Student();
  5.                 System.out.println(s.getName());
  6.         }

  7. }
  8. class Person
  9. {
  10.        
  11.         private String name="fdff";

  12.         public String getName() {
  13.                 return name;
  14.         }

  15.        
  16. }


  17. class Student extends Person
  18. {
  19.        
  20. }
复制代码

最后 输出  fdff  
要是没有继承name 字段 怎么可能输出 name字段的值,难道 在创建Student对象的时候 会先创建Person 对象

点评

那我再给你说一遍 我举个例子 你写了一封信 这封信只有这个房间的人可以读,但是房间外的人想要读取,是不被允许的,但是这个人可以叫一个房间里的人帮他读,这样就可以达到目的了。   发表于 2015-6-5 19:34
??我打了那么多话 怎么才显示这几行。  发表于 2015-6-5 19:31
兄弟 你这是调用的getname的方法,也就是说你这个方法可以被调用,这个方法并没有任何限制,而且这个方法在这个private修饰的变量的类里面,也就是说满足只有本类才可以访问name的限制,所以这个方法可以访问name的   发表于 2015-6-5 19:29
回复 使用道具 举报
1.子类可以直接访问父类中的非私有的属性和行为;2.子类无法继承父类中私有的内容。
回复 使用道具 举报
子类会继承父类的所有成员,包括私有的,但是不能直接使用。
回复 使用道具 举报
父类的私有成员  可以通过继承自父类非私有的方法调用
回复 使用道具 举报
会继承,除非被private修饰
回复 使用道具 举报
私有的不会继承吧
回复 使用道具 举报
wqw 中级黑马 2015-6-7 11:04:43
34#
子类对象拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的,只是拥有,但不能使用
静态方法和静态变量是属于类的,所以子类可以调用父类的静态方法
回复 使用道具 举报
Enhon1992 发表于 2015-6-4 20:05
你的意思是静态的不能被继承  怎么有人说:  不知道哪个是对的

我理解错了.  正确的应该是  : 静态成员也会被子类继承的,父类中的私有成员不会被继承, .     子类通常都是通过,子类  父类中的构造器,以及子类构造器中的super()语句来完成父类中私有变量的赋值,通过get set 方法来使用该变量.  
回复 使用道具 举报
wdd 发表于 2015-6-7 14:50
class Person //父类
{
       public Person()

  1. public class Test {

  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub

  4.                 Student s=new Student();
  5.                 System.out.println(s.getName());
  6.         }

  7. }
  8. class Person
  9. {
  10.         
  11.         private String name="fdff";

  12.         public String getName() {
  13.                 return name;
  14.         }

  15.         
  16. }


  17. class Student extends Person
  18. {
  19.         
  20. }
复制代码

就上面的代码而言 在调用 s.getName()方法的时候,执行到getName()方法中的 return name 这行代码的时候,会去访问 name这个字段 ,  在内存中肯定会有一块区域是来保存 name对应的数据,要是没有继承 name的话 怎么可以访问到name 的值。


fgfdgfdgfdg
回复 使用道具 举报
wdd 中级黑马 2015-6-7 17:44:42
37#
Enhon1992 发表于 2015-6-7 17:08
就上面的代码而言 在调用 s.getName()方法的时候,执行到getName()方法中的 return name 这行代码的时 ...

你是调用了父类中的方法,没有直接使用name这个属性,私有成员是可以通过方法获取到的,只是不能直接使用,你可以试试直接使用,看看效果
回复 使用道具 举报
子类在继承父类时,会自动拥有父类的所有成员,包括私有和静态。只是私有成员不能直接访问,需要提供公共的访问方式。
回复 使用道具 举报
Enhon1992 发表于 2015-6-7 17:08
就上面的代码而言 在调用 s.getName()方法的时候,执行到getName()方法中的 return name 这行代码的时 ...

你确定你的说法是正确的! 不会坑我吧 ,我准备把最佳答案给你了
回复 使用道具 举报
wdd 发表于 2015-6-7 17:44
你是调用了父类中的方法,没有直接使用name这个属性,私有成员是可以通过方法获取到的,只是不能直接使用 ...

你确定你的说法是正确的! 不会坑我吧 ,我准备把最佳答案给你了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马