继承当子类继承时,父类中的一切都被继承,在子类中是不是不能更改构造函数的形式,必须根据父类中的格式进行定义
例如:
父类
class A
{
private int a;
private int b;
public A(int aValue,int bValue)
{
a = aValue;
b = bValue;
}
......
......
......
}子类
class B extends A
{
private c;
private d;
public B(int aValue,int bValue)------->这里子类中的构造函数中的参数必须跟父类一样吗?包括类型跟参数名
{
super(aValue,bValue);还有关于super的用法,是用来表示父类的东西,为什么继承之后要使用父类的属性不能直接使用,还要借助于super
}
}
大概问题就这么多,大家给解释解释啊
例如:
父类
class A
{
private int a;
private int b;
public A(int aValue,int bValue)
{
a = aValue;
b = bValue;
}
......
......
......
}子类
class B extends A
{
private c;
private d;
public B(int aValue,int bValue)------->这里子类中的构造函数中的参数必须跟父类一样吗?包括类型跟参数名
{
super(aValue,bValue);还有关于super的用法,是用来表示父类的东西,为什么继承之后要使用父类的属性不能直接使用,还要借助于super
}
}
大概问题就这么多,大家给解释解释啊
class B extends A
{
private c;
private d;
public B(int aValue,int bValue)------->这里子类中的构造函数中的参数必须跟父类一样吗?包括类型跟参数名
{
super(aValue,bValue);还有关于super的用法,是用来表示父类的东西,为什么继承之后要使用父类的属性不能直接使用,还要借助于super
}
}1.如果形参类型一样,则为重写了父类的方法
如果形参类型不一样
例如
public B(int a,float b){
}
则你会隐式继承一个父类的构造函数,这个构造函数如果你写出来,就是下面这个样子
public B(int aValue,int bValue){
super(aValue,bValue);
}
然而
public B(int a,float b){
}
这个构造函数则为你重载的一个新的构造函数,也就是说,现在你的B类有两个构造函数第二个问题我就不想回答了,其实第一个我也不想回答。。
我想跟你说,你的问题不是继承的问题。
你现在是需要看书的问题。如果你不明白重载和重写的机制还算可以理解的话,那你不知道两个函数的形参参数名是任意的,互不影响的,那就是不可以理解的。说明你书还需要看,基本上可以说明你前几章基础内容需要再仔细的看一遍,或者几遍,再来学习继承这类的知识。
关于super this 方法重载 方法重写 ,这些都是继承里的基本语法,任何一本普通的java书里都会对这一部分大书特书(因为深一点的他也不会,不讲语法讲什么)总结一下。断网!看书!才是你应该做的!
构造函数是不能被继承的
子类的构造函数一定会调用父类的构造函数,通过super()调用,或显式或隐式
如果父类有一个自己定义的带参数的构造函数,那么子类必须显式重写这个函数(我上面说如果不写会隐式继承一个那是错的,如果不写编译器会报错),并且必须调用super(参数)方法public B(int a,float b){
}
这个构造函数则为你重载的一个新的构造函数,也就是说,现在你的B类有两个构造函数
这句是正确的
class A{
private int a;
private int b;
public A(int aValue,int bValue){
a=aValue;b=bValue;
}
public int geta(){
return a;
}
public int getb(){
return b;
}
}
public class B extends A {
B(){
super(3,4);
}
public static void main(String args[]){
B t=new B();
System.out.println(t.geta());
System.out.println(t.getb());
}
}
如果子类的构造函数和父类的构造函数参数不同,则必须在子类的构造函数书里面写super(3,4);
构造方法是不能被继承的~
而且要想重载构造器就必须要写两个
假如父类的构造是public A(int a,int b){
}那么父类必须跟一个public B(int a,int b){
}也就是说父类构造器是什么样子类也必须是什么样。至于重写和重载你不会就应该看书了。
拿方法来说,
子类继承了父类的方法,然后子类想修改父类的方法。这叫重写,最简单的
是当父类是抽象类的时候。子类如果不是抽象类就必须把父类重写。
而重载是在一个类中出现的方法名相同,方法签名不同的方法。把他们叫做重载
examplepublic void method1(int a,String b ){
}
public void method1(int a ,int b ){
}这就是重载,
希望可以帮到你~~
当父类构造函数是有参数时 即 public A()方法里面有参数,子类必须调用父类构造函数 即public A(), 用SUPER()方法,SUPER中的参数个数和类型必须和public A()中的相同。
至于子类人构造函数 即public B(),它的参数类型、个数是任意的。如:class father
{ int n=1;
int m=2;
public father(int n,int m){
this.n=n;
this.m=m;
System.out.println("n="+n+"\n"+"m="+m);
}
}public class Child extends father
{ int s;
String t;
public Child(int s,String t){---Child()里面的参数个数,类型是任意的
super(7,9);-----必有有这个方法,且必须有两个Int 型参数
this.s=s;
this.t=t;
}
public static void main(String []args){
father f=new Child(9,"t");
}
}