java私有方法可以继承吗

私有的成员和方法可以在子类中被继承吗,如果不能为什么不能,求解详细点

5个回答

首先说私有的成员和方法不能被子类继承,这是java语法规范强制规定,也是面向对象设计的原则。
其次,脱离具体的语言,从面向对象角度来看,用private修饰要表达的含义私有私用,不共享,如果一个父类的方法需要被子类继承使用,就应该用protected修饰,如果要公开给所有类使用,就应该用plublc修改。这是面向对象设计的基本要求。
最后,虽然private方法、属性不能被继承,但是可以用过非常规手段访问其他类的private属性和方法,比如利用java的反射机制,甚至cglib等第三方字节码操作工具。

私有的成员和方法可以在子类中被继承吗

不能,只能在当前类中访问。

不能,只有protected才能被子类继承

alert(1) "alert(1)")

alert(1)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

JAVA子类不能继承父类私有方法是么

父类都不能用他本身的私有方法,子类岂不是更不能用了,这一点是怎么证明的?举个例子![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/2.gif)

关于父类的私有成员能否被子类继承的问题

照片中划线部分说了父类的私有成员不能被子类继承,但我在CSDN上看到有位大佬说父类的所有成员不管什么权限都能被子类继承??? 本人菜鸟,希望有大神能帮我解惑(献上膝盖)#![图片](https://img-ask.csdn.net/upload/201710/10/1507634947_164714.jpg)![图片](https://img-ask.csdn.net/upload/201710/10/1507635004_34184.jpeg)

Java多线程在继承runnable时,run方法中能写循环吗?

Java多线程在继承runnable时,run方法中能写循环吗? 如果想多个线程能共用一个循环能做到吗?

父类变量私有化后,在子类的构造方法中,为什么使用父类构造方法super(参数),可以给子类对象赋值

```class Person { //私有属性是不能被继承的 private String name ; private int age; //构造方法 public Person() { } public Person(String name,int age) { this.name = name ; this.age = age; } //set/get方法 //继承了set/get方法, public void setName(String name) { this.name = name; } public String getName() { return this.name; } public void setAge(int age) { this.age = age; } public int getAge() { return this.age; } //吃饭 public void eat() { System.out.println("吃饭"); } } //老师类 class Teacher extends Person1 { //有参数的构造方法 public Teacher(String name ,int age) { super(name,age);//为什么用父类的构造方法能够给子类的变量赋值?????????????? } //讲课 public void jiangKe() { System.out.println(this.getName() +"讲课"); } } ``` 为什么在子类的构造方法中,super(参数 ),可以给子类的变量赋值,super()调用的不是父类的构造方法吗

有关Java继承中,this使用方法的问题。

首先,我理解的this就是指向当前对象。但是如下代码让人有点想不通。 ``` //父类 public class Sup { public Object f1 = "Sup.f1"; public Object f2 = "Sup.f2"; public void mA(){ System.out.println("Sup.mA"); } public void mB(){ this.mA(); } public void getF1(){ System.out.println(this.f1); } public void getF2(){ System.out.println(this.f2); } } ``` ``` //子类 public class Sub extends Sup { public Object f1 = "Sub.f1"; public Object f2 = "Sub.f2"; public void mA(){ System.out.println("Sub.mA"); } public void getF2(){ System.out.println(this.f2); } } ``` ``` //测试类 public class Test { public static void main(String[] args) { Sup sup1 = new Sub(); sup1.mB(); sup1.getF1(); sup1.getF2(); } } ```

在 Java 中,公共的、受保护的、包私有的和私有的有什么区别?

<div class="post-text" itemprop="text"> <p>In Java, are there clear rules on when to use each of access modifiers, namely the default (package private), <code>public</code>, <code>protected</code> and <code>private</code>, while making <code>class</code> and <code>interface</code> and dealing with inheritance?</p> </div> <p>转载于:https://stackoverflow.com/questions/215497/what-is-the-difference-between-public-protected-package-private-and-private-in</p>

父类私有方法的getClass输出了子类的类名

类 **TestCode** public class TestCode<T> { private String entityClass = getEntityClass(); private String getEntityClass(){ System.out.println(getClass()); System.out.println(getClass().getGenericSuperclass()); //Type trueType = ((ParameterizedType) type).getActualTypeArguments()[0]; //return (Class<T>) trueType; return "1"; } } 类二: public class TestB extends TestCode { public static void main(String[] args) { new TestB(); } } 为什么输出结果为: class test.TestB class test.TestCode 父类的方法不是私有的吗。?为什么获得的类名会是子类的? 私有成员不是不应该被子类继承吗。

java抽象类中私有属性初始化之后与预期结果不一致

背景是这样的,项目使用的是Spring MVC类与类之间是通过@Autowired注解进行 注入的,我有一个Email的抽象类 ``` public abstract class Mail { protected boolean isEmailContentValid = true; } ``` 然后有多个子类机型了这个Email抽象类,比如AEmail extends Mail ``` public class MailFactory { @Autowired AEMail aEMail; } ``` 在MailFactory中,通过aEMail访问其父类的属性isEmailContentValid, 竟然是false的,一直想不通是为什么,我已经在父类Email中显示初始化 了isEmailContentValid=true,为什么初始化之后确实false的?

java中,父类中的成员属性的值会被子类继承的疑惑!

直接看代码吧!有些人审题不清楚就回答了,看清楚题目,我说的是父类中的成员属性的值会被子类继承!是父类的属性的值会被子类继承,我不是问父类的属性会被子类继承!大家看清楚好吗?大家是怎么理解的! class Father { String name; String hometown = "江西省赣州市于都县"; int age = 52; } public class Son extends Father{ public static void main(String[] args) { Son son = new Son(); /** son是子类对象,son对象没有给name和 hometown和age这3个属性赋值,如下打印的代码却打印出了父类的属 性值,可见子类不光是继承了父类的属性,连父类的属性值都继承下来了,我这样理解正确吗? */ System.out.println("子类姓名=" + son.name + " 子类年龄=" + son.age + " 子类家乡=" + son.hometown); /** 再看下面的代码,我给son对象的name和age属性赋值后,打印出了son对象自己的属性值,这里我没有对son对象的hometown属性赋值,所 以son对象的hometown属性值仍然继承和沿用父类的hometown属性值,我这样理解对吗? */ son.name = "令狐冲"; son.age = 24; System.out.println("子类姓名=" + son.name + " 子类年龄=" + son.age + " 子类家乡=" + son.hometown); } } ``` ``` son是子类对象,son对象没有给name和 hometown和age这3个属性赋值,却打印出了父类的属性值,可见子类不光是继承了父类的属性,连父类的属性值都继承下来了,我这样理解正确吗?大家说下你们是怎么理解的,可以举一些现实生活中的例子帮助我理解吗?不吝赐教,谢谢

基础问题,关于继承时父类私有属性内存问题

java官方文档说在继承中子类不能继承父类的private属性,那么在程序运行中,new一个子类的实体在堆中时,此子类实体中会不会为父类的private属性值开辟内存?如果不开辟的话,那么下面这俩图,调用show方法压栈,然后其中的get方法随之压栈,那么这个get方法该到哪去找a的值呢?还是说当get方法压栈的时候a才以“局部变量”的身份直接在栈中储存,然后随着get弹栈而被适放? 。。。。。。求大神解答(没有c币可用。。。)![图片](https://img-ask.csdn.net/upload/201612/27/1482816752_132914.png)![图片](https://img-ask.csdn.net/upload/201612/27/1482816760_828016.png)

java写一个Person类,包含name、age、sex属性,再写一个Student类继承Person类,增加School属性,并实例化。(用构造方法实现,并使用super())

java写一个Person类,包含name、age、sex属性,再写一个Student类继承Person类,增加School属性,并实例化。(用构造方法实现,并使用super())

protected 修饰符与继承

问题1 ``` //父类 package com.itheima.day_06; public class Supper { protected void show() { System.out.println("this is Supper show"); } } //子类 package com.itheima.day_07; import com.itheima.day_06.Supper; public class Subber extends Supper { public static void main(String[] args) { Supper sub = new Subber(); sub.show();//报错,说明调用的是父类的方法,sub的动态绑定哪里去了? } } ``` 子类调用show()时实际调用的是父类的方法?我查看了字节码文件,发现子类字节码中没有该方法,在子类调用该方法,常量池保存的方法符号引用却是指向子类的。 问题2 ``` //父类 package com.itheima.day_06; public class Supper { protected static void show() { System.out.println("this is Supper show"); } } //子类 package com.itheima.day_07; import com.itheima.day_06.Supper; public class Subber extends Supper { public static void main(String[] args) { Supper.show();//不报错??? } } ``` 为什么子类可以直接调用父类的protected static 方法?

java继承 在子类中声明同名变量的问题???

如下代码: ``` class Person { String name; int age; public void introduce(){ System.out.println("姓名是" + name + ",年龄是" + age); } } public class Students extends Person{ // String name; public static void main(String[] args) { Students students = new Students(); students.name = "小明"; students.age = 24; students.introduce(); } } ``` 这段代码执行结果打印 姓名是小明,年龄是24 但是把那行注释语句加上的话 打印结果是姓名是null,年龄是24 为什么呢? 貌似有继承中变量的覆盖或者说是隐藏的问题,不是很理解,求助了。

一个关于Java继承 接口 抽象的实验

定义长方体类Cuboid,要求如下:(1)私有成员变量包括长length、宽width和高height;(2)构造方法包括一个公共的空构造方法,一个能够初始化所有成员变量的构造方法;(3)包括所有的setter和getter方法,其中setter方法要求对形参进行验证,例如长、宽和高都大于0;(4)功能方法包括计算表面积getArea()、计算体积getCubage()、覆盖toString()输出该长方体的长宽高等信息。 定义正方体类Cube,要求如下:(1)私有成员变量包括边长length;(2)构造方法包括一个公共的空构造方法,一个能够初始化所有成员变量的构造方法;(3)包括所有的setter和getter方法,其中setter方法要求对形参进行验证,例如边长大于0;(4)功能方法包括计算表面积getArea()、计算体积getCubage()、覆盖toString()输出该正方体的边长等信息。 定义圆柱体类Cylinder,要求如下:(1)私有成员变量包括底半径radius和高height;(2)构造方法包括一个公共的空构造方法,一个能够初始化所有成员变量的构造方法;(3)包括所有的setter和getter方法,其中setter方法要求对形参进行验证,例如底半径和高都大于0;(4)功能方法包括计算表面积getArea()、计算体积getCubage()、覆盖toString()输出该圆柱体的底半径和高。 定义三棱柱类Triprism,要求如下:(1)私有成员变量包括底面三角形的三边长度length1 length2 length3和高height;(2)构造方法包括一个公共的空构造方法,一个能够初始化所有成员变量的构造方法;(3)包括所有的setter和getter方法,其中setter方法要求对形参进行验证,例如三边长度和高都大于0;(4)功能方法包括计算表面积getArea()、计算体积getCubage()、覆盖toString()输出该三棱柱的基本信息。 编写测试类,以上物体,各生成一个,对属性赋有意义的初始值,输出对象信息。调用方法(自己决定怎么写)比较他们的表面积大小 和 体积的大小,比较三对即可。 说明:除了必须出现的部分,可自己选择添加方法或属性,接口或抽象类,不限种类数量。

对于类对父类私有成员变量的继承问题

对于一个父类,我声明了一些私有成员变量,并声明它的子类为父类的友元。在子类的方法中我用到了父类的变量,但编译器却告诉我没有声明。附上代码。 ``` #include <iostream> #include "Chain.h" class LinkedDigraph; template<class T> class LinkedWDigraph; template<class T> class LinkedBase{ friend LinkedDigraph; friend LinkedWDigraph<T>; public: LinkedBase(int Vertices=10){ n=Vertices; e=0; h=new Chain<T>[n+1]; } ~LinkedBase(){ delete [] h; } int Edges() const{ return e; } int Vertices() const{ return n; } int OutDegree(int i) const{ if(i<1||i>n) throw "wrong info"; return h[i].length; } void InitializePos(){ pos=new ChainIterator<T> [n+1]; } void DeactivatePos(){ delete []pos; } private: int n,e; Chain<T> *h; ChainIterator<T>* pos; }; template<class T> class LinkedWGraph; template<class T> class GraphNode{ friend LinkedWDigraph<T>; friend LinkedWGraph<T>; friend Chain<T>; private: int vertex; T weight; }; template <class T> class LinkedWDigraph:public LinkedBase<GraphNode<T> >{//Note:两个右尖括号不能连续使用 public: LinkedWDigraph(int Vertices=10): LinkedBase<GraphNode<T> >(Vertices){} LinkedWDigraph<T>& Add(int i,int j,const T& w); protected: LinkedWDigraph<T>& AddNoCheck(int i,int j,const T&w); }; template<class T> LinkedWDigraph<T>& LinkedWDigraph<T>::Add(int i,int j,const T& w){ return AddNoCheck(i,j,w); } template<class T> LinkedWDigraph<T>& LinkedWDigraph<T>::AddNoCheck(int i,int j,const T& w){ GraphNode<T> x; x.vertex=j; x.weight=w; h[i].Insert(0,x); e++; return *this; } ``` 错误提示:69 2 C:\Users\dell\Documents\LinkedBase.cpp [Error] 'h' was not declared in this scope 70 2 C:\Users\dell\Documents\LinkedBase.cpp [Error] 'e' was not declared in this scope

java中抽象类的抽象方法可以用默认访问控制符吗?

我一直认为不能用,因为子类继承的话无法访问,可是有人告诉我可以用,不知道为什么可以用?

定义一个类Person,在该类中定义方法work(); (2)定义类Doctor,继承自Person,覆盖父类的work()方法,在该方法中输出“我是医生”;........

编写一个Java程序,要求: (1)定义一个类Person,在该类中定义方法work(); (2)定义类Doctor,继承自Person,覆盖父类的work()方法,在该方法中输出“我是医生”; (3)定义类Teacher,继承自Person,覆盖父类的work()方法,在该方法中输出“我是教师”; (4)定义主类Test,在主方法中创建Doctor和Teacher类的对象,测试work()方法。

java重写框架中的某个方法

有个框架的接口-当然也有框架的方法实现它的所有方法-我在开发过程中-用了实例化了该接口中的类-我现在想重新写框架中方法-必须要写个接口-这个接口继承框架的接口-写个方法来实现这个接口-问题来了-我只重写一个方法-但是现在必须重写所有的方法-得重写500个呢-怎么办-有没有好的办法-我只想重写框架中的某个方法,没有币,谢谢。

java方面:private属性,没有set方法,只有get方法,如何给这个属性赋值?

如题; public class Foo { private String readwrite; // with getter and setter private String readonly; // with getter public String getReadwrite() { return readwrite; } public void setReadwrite(String readwrite) { this.readwrite = readwrite; } public String getReadonly() { return readonly; } } 当我在其他类中调用Foo时,想给其readonly赋值,怎么办?

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问
相关内容推荐