「java返回父类」java中返回值
今天给各位分享java返回父类的知识,其中也会对java中返回值进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、Java中子类重写父类的方法为什么返回值类型要小于等于父类方法的返回值类型?
- 2、java 里边要实现一个抽象方法返回一个父类的私有属性的值怎么写?
- 3、java中“super”的用法及意义是?
- 4、JAVA中父类作为返回值类型有什么用
Java中子类重写父类的方法为什么返回值类型要小于等于父类方法的返回值类型?
个人观点:子类重写父类方法,假设子类和父类都有抛出异常的逻辑,假设父类抛出了IOException,而子类抛出了Exception(包含IOException),你可以想象一张小渔网怎么能网住一头鲸鱼,这就是子类抛出异常必须是父类异常的派生类的原因。
所以从返回上说,可以推出子类方法返回值类型不能大于父类方法,因为返回时抛出的异常必须能被父类捕获。
再补充一点:为什么重写还有一条规则是访问控制符必须高于父类?那是因为为了多态的实现。有时候父类需要上转型引用子类的方法实现多态,这就导致子类方法的访问控制符必须高于父类,否则子类里写成了private,父类还怎么访问?
同理,子类方法返回值类型小于父类,因为父类引用子类方法实现多态,你不能让一个返回空的方法的返回值经过一个不能返回空的方法出去。
java 里边要实现一个抽象方法返回一个父类的私有属性的值怎么写?
abstract
class
Figure
{
private
String
shape;
public
Figure(String
shape)
{
this.shape=shape;
}
//这里添加一个get方法,便于子类访问父类的属性
public
String
getShape()
{
return
shape;
}
public
abstract
String
setShape();
}
public
class
A
extends
Figure
{
public
A(String
shape)
{
super(shape);
}
//通过父类的get访问器访问其私有属性
public
String
setShape()
{
return
super.getShape();
}
}
在main方法里面测试:
A
a=new
A("aa");
System.out.println(a.setShape());
java中“super”的用法及意义是?
java中的super指的就是父类(super class)\x0d\x0a例:B继承A\x0d\x0aA类\x0d\x0aclass A {\x0d\x0a private String astr;\x0d\x0a private String bstr;\x0d\x0a public A(string astr, string bstr) {\x0d\x0a this.astr = astr; //this指的是本类,在这里就是A\x0d\x0a this.bstr = bstr;\x0d\x0a }\x0d\x0a \x0d\x0apublic String getAstr() {\x0d\x0a return this.astr;\x0d\x0a}\x0d\x0a\x0d\x0apublic String getBstr() {\x0d\x0a return this.bstr;\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0aB类\x0d\x0aclass B extends A {\x0d\x0a private String aa;\x0d\x0a private String bb;\x0d\x0a \x0d\x0a public B(String aa, String bb) {\x0d\x0a super(aa, bb); //这里就调用了父类的构造方法,给父类的super.astr,super.bstr(super.astr也就是父类的astr变量,super.bstr同理)两个变量赋值了,而不是给this.aa,this.bb(this.aa可以理解为本类的aa变量,this.bb同理)赋值\x0d\x0a // this.aa = aa; \x0d\x0a // this.bb = bb;\x0d\x0a } \x0d\x0a \x0d\x0apuplic String getAA() {\x0d\x0a return this.aa;\x0d\x0a}\x0d\x0a\x0d\x0apublic String getBB() {\x0d\x0a return this.bb;\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a测试类\x0d\x0apublic class Test {\x0d\x0a public static void main(String[] args) {\x0d\x0a B b = new B("aabb", "ccdd"); // 调用B的构造方法,给super.astr,super.bstr赋值了\x0d\x0a System.out.println(b.getAa()); // null 没有被赋值\x0d\x0a System.out.println(b.getBb()); // null\x0d\x0a System.out.println(b.getAstr()); // aabb 调用父类的方法,返回super.astr的值\x0d\x0a System.out.println(b.getAstr()); // ccdd 调用父类的方法,返回super.bstr的值\x0d\x0a }\x0d\x0a}
JAVA中父类作为返回值类型有什么用
个人见解:把父类作为返回值,除了多态的作用(个人理解,这个是多态,但不好使用,使用有局限性,一般用参数类型设为父类的类型来进行调用多态)
主要作用就是可以用连续调用该类方法,来进行操作,如类A,他有b方法,c方法,d方法
如果要调用b
、c、d方法,就可以这么写A
a
=new
A();
a.b().c().d();
也就是先前方法的结果可以做为下个方法的输入。
java返回父类的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java中返回值、java返回父类的信息别忘了在本站进行查找喔。