Java新手求解答

问题描述

背景:在跟着视频学习类的继承和函数重写:代码如下classPerson{privateStringname;privateintage;publicvoidsetName(Stringname){this.name=name;}publicvoidsetAge(intage){this.age=age;}publicStringgetName(){returnname;}publicintgetAge(){returnage;}publicStringgetInfo(){return"name:"+name+"n"+"age:"+age;}}classStudentextendsPerson{privateStringschool;publicStringgetSchool(){returnschool;}publicvoidsetSchool(Stringschool){this.school=school;}publicStringgetInfo(){return"name:"+name+"n"+"age:"+age+"n"+"school"+school;}}publicclassTestPerson{publicstaticvoidmain(String[]args){Studentstudent=newStudent();Personperson=newPerson();person.setName("none");person.setAge(11);student.setName("jolin");student.setAge(21);student.setSchool("SCH");System.out.println(person.getInfo());System.out.println(student.getInfo());System.out.println(student.getSchool());}}根据对比我发现要将30行的name改成getName,age改成getAge代码可以成功编译问题1:与17行对比我就很疑惑。既然是继承就包括继承了成员变量name和age为什么这里就不可以直接调用了?问题2:还有我试了下如果把30行的name改成student.name还是不行同样的改成this.name还是出错。这里问题比较杂求大神解答

解决方案

解决方案二:
因为name和age是私有的(private)
解决方案三:
是私有。但是student继承了person。所以student里也应该有name和age。所以调用应该理论上还是可以的。难道是name计算机不识别是student还是person的?那我加了个student.name还是识别不了?
解决方案四:
引用1楼u010779899的回复:

因为name和age是私有的(private)

理论上是不可以的。私有就是私有,虽然student里面有父类的所有属性,但就是没有权限访问。你可以用protected范围。
解决方案五:
私有就是私有,虽然student里面有父类的所有属性,但就是没有权限访问。你可以用protected范围。
解决方案六:
4楼说的对,这两个属性是父类私有的属性,子类无法直接访问,只能通过getset方法来访问。同时,不止是子类无法访问,其他任何一个类都不能直接访问另一个类的私有属性。
解决方案七:
根据对比我发现要将30行的name改成getName,age改成getAge代码可以成功编译问题1:与17行对比我就很疑惑。既然是继承就包括继承了成员变量name和age为什么这里就不可以直接调用了?问题2:还有我试了下如果把30行的name改成student.name还是不行同样的改成this.name还是出错。解析:1)类的私有属性只归其本身所有,其他类访问该属性只能通过该类对外提供的方法访问--类的封装特性2)有我试了下如果把30行的name改成student.name还是不行--student哪来的建议把抽象和类的封装、继承、多态特性好好理解,多练,多分析就好,动手之前多看看书上的分析
解决方案八:
private私有的,不可继承。public公共的,可继承。protected受保护的,可继承。
解决方案九:
父类的private成员和方法,子类可以直接访问吗?答案是不能。

时间: 2024-10-26 05:40:20

Java新手求解答的相关文章

线程停止-java如何停止当前正在运行的线程,新手求解答

问题描述 java如何停止当前正在运行的线程,新手求解答 最近想做一个无线数据监控服务端,用java做的,面板Jframe设置了一个Jpanel,我称这个为Jpanel 1 ,在Jpanel 1中我定义了一个多选JCheckbox,有四种监控方式可选:Bluetooth,Wifi,GPRS,Zigbee.还定义了一个JButton,分为开始ON,结束OFF,然后在JPanel 1中定义了JPanel 2,JPanel 2 中我定义了JScrollPane,scrollAndSetCursor用于

代码-缓存流的问题,新手求解答

问题描述 缓存流的问题,新手求解答 import java.io.*; public class Student { public static void main(String[] args) { // TODO Auto-generated method stub String[] content={"好久不见","你好吗","常联系"}; File file=new File("word.txt"); try{ File

java 新手求问cannot be resolved to a type 的解决方法

问题描述 java 新手求问cannot be resolved to a type 的解决方法 这是我自学的一个项目,以前没发现这样的问题,jdk8.65,eclipse是最新版,看了网上的同类问题好像是jar包导入的问题,但是不知道具体怎样解决,请路过的大神指点迷津,万分感谢 import java.awt.*; import java.awt.event.*; public class ChatClient extends Frame{ TextArea ta = new TextArea

asp net mvc 上传-asp.net mvc文件上传问题,新手求解答!

问题描述 asp.net mvc文件上传问题,新手求解答! asp.net mvc文件上传问题,新手求解答!

图片-Java新人求解答:自己制作一个网站,出现问题,求详细解答。

问题描述 Java新人求解答:自己制作一个网站,出现问题,求详细解答. 我自己制作了一个网站,该网页上设定了插入图片这一选项,可是当我插入一张名为 Peter_Jackson.jpg 的图片后,网页上没有显示, 而且myeclipse的console还报出了如下错误: java.io.FileNotFoundException: C:mysoftwareapache-tomcat-7.0.37webappsfriend2uploadpic_3E:David_LiupicturePeter_Jac

新手求解答,如何在Windows下编译Audacity?

问题描述 新手求解答,如何在Windows下编译Audacity? 希望大神给出详细步骤.希望可以更改Audacity的代码并观看效果. 解决方案 楼主,Audacity是一个音频处理软件吧?你是要调他的功能还是做个类似的? 解决方案二: 新手求解答数据库连接(新手求解答)

ava基础 代码错误-Java新手,求大神帮小弟看看这段代码哪里错了,多谢!!!

问题描述 Java新手,求大神帮小弟看看这段代码哪里错了,多谢!!! class Student { //姓名 private String name; //年龄 private int age; //构造方法 public Student(){ } public Student(String name, int age){ this.name = name; this.age = age; } public String getName(){ return name; } public voi

新手求解答一下-新手求解答各位大神帮帮忙

问题描述 新手求解答各位大神帮帮忙 是这样的,我昨天刚刚安装了一个ocrale?11g?,但是我怎么登陆都登不上去,用sys?as?sysdba显示的是权限不足,用scott显示账户被锁,用internal显示不是有效的dba连接,我用的是win10,新手小白我真的不知道怎么办了QAQ 解决方案 记得原来登录是用的scott,密码是tiger,你这种问题没遇到过...抱歉

新手求解答一下,,,

问题描述 新手求解答一下,,, 代码求解释-!!!代码求解释-!!!代码求解释-!!!代码求解释-!!!代码求解释-!!! 解决方案 就是对List的一些操作和简单的for循环嘛 解决方案二: 就是简单对list的操作,以后慢慢就明白了. 解决方案三: 你想要解答什么,这就是一个简单的对list操作 解决方案四: stuList是一个List对象,可以往里面添加具体的实例,添加完就遍历 解决方案五: 首先在stuList中添加三个学生的信息: for循环遍历添加的学生信息: 通过设置要查找的学生