java类继承
A. java中定义一个类可以同时继承两个类
java中一个类不能直接继承两个类。
比如说这样:class A extends B,C
不能这样写,因为java不支持多继承,但是可以像下面这样实现继承多个类:
class A extends B
class C extends A
这样C就同时继承了B和A两个类。
(1)java类继承扩展阅读
当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:
1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;
2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
B. java中的继承都有哪些
继承分为单重继承和多重继承;单继承:一个子类只有唯一的父类;多重继承:一个子类可以继承多个父类;但是java不支持多继承。子类继承父类,子类继承了父类的属性可以调用父类的方法,还可以自己添加方法。
C. java类的继承
这个简单:
因为student 类标明了extends Person
所以student是继承自Person,所以继承了该类的公有方法和属性,所以也有name和age,又自己加了一个属性majorty,
在main方法里,声明了一个Person数组
Person作为声明可以new出其子类的对象,所以Person[1]是Student类,调用的方法是student类覆盖的Person的Print方法
记得加分哦~这可是0分悬赏
D. java:怎样继承其他java文件中的类(在同一个目录下)
你先编译a.java,再编译b.java,在编译b的时候可能需要指定classpath。或者你试下直接用javac *.java批量编译。
补充:我试了,可以呀!
以下是我的测试:
======================cmd.exe===========================
E:\java>tree /f
卷 软件暂放 的文件夹 PATH 列表
卷序列号为 34BC-AF78
E:.
A.java
B.java
没有子文件夹
E:\java>javac *.java
E:\java>java B
Hello A!
E:\java>
========================================================
其中:
class A{
public void fun(){
System.out.println("Hello A!");
}
}
===========================================
class B extends A{
public static void main(String[] a){
B b = new B();
b.fun();
}
}
=====================
如果是因为你类中使用了包声明,则请参阅这个
http://..com/question/126658240.html
^_^
再次补充:
如果你一定要将你的源代码成功编译的话,倒可以这样做:
=======cmd==========
E:\java>tree /f
卷 软件暂放 的文件夹 PATH 列表
卷序列号为 34BC-AF78
E:.
└—mypk
A.java
B.java
E:\java>
===============end of cmd============
将你两个类文件放在E:\java\mypk目录下,注意最后一个是mypk,和你包名相同。
然后将cmd切换到mypk上一个目录,即上面的E:\java目录中,
==============cmd======================
E:\java>javac mypk/A.java
E:\java>javac mypk/B.java
E:\java>java mypk.B
Exception in thread "main" java.lang.NoSuchMethodError: main
E:\java>
============end of cmd =====================
首先使用“javac mypk/A.java”编译,这里最后一个“/”表示“目录层次”的意思。
然后用“E:\java>java mypk.B”运行,这里最后一个“.”表示“包结构”的意思。
最后抛出的那个异常是因为你B.java中没有main()函数所致。
E. java语言的类间的继承关系是
Java语言中的类只支持单继承,而接口支持多继承。
Java中多继承的功能是通过接口(interface)来间接实现的。
JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。
继承分为单继承和多重继承。单继承是指一个子类最多只能有一个父类。多继承是一个子类可以有二个以上的父类。由于多继承会带来二义性,在实际应用中应尽量使用单继承。
继承是面向对象最显着的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。[1] Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。
F. java继承与类
首先,需要了解一下java关于类继承和接口实现的基础理论知识,如下:
类继承:继承是面向对象最显着的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
接口实现:接口实现在java中是一种特殊继承方式,接口在定义后,就可以在类中实现该接口。在类中实现接口可以使用关键字implements,其基本格式如下:
[修饰符] class <类名> [implements 接口列表]{
}
然后,需要创建父类和定义接口,如下:
创建父类:
classBird{
intlegnum=2;
voidegg(){
};
}
定义接口:
interfaceFlyanimal{
voidfly();
}
最后,可以创建一个类来继承上面的父类和实现上面的接口,如下:
{
publicvoidfly(){
System.out.println("pigeoncanfly");
}
publicvoidegg(){
System.out.println("pigeoncanlayeggs");
}
}
G. 关于JAVA中类的继承
private int x; int sz[]=new int[x]; 这两个定义本身就有问题,x木有初始化,你只能new int[x]. 还有 你为sz赋值 直接 sz=a就可以为什么要循环? 关于第二个问题 每次实例化时都会自动调用父类构造方法 和静态语句块,..就说这么多,学学Java基础吧
H. java如何实现类的继承
你好,很高兴回答你的问题。
java实现类的继承是通过下面这样。
假定父类是A,要让子类B继承A类,则B类的定义是下面这样:
public class B extends A{
}
如果有帮助到你,请点击采纳。
I. JAVA中什么是继承
继承在本职上是特殊一般的关系,即常说的is-a关系。子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的 一些属性或方法。
1.Java继承的语法格式:
Java继承的关键字是:extends
public class 子类名 extends 父类名{...}
如: public class UNStudent extends Student {...} 注:1.子类又称超类,拓展类 ;父类又称基类。
2.Java中类的继承只能是单继承(单根继承),即一个类只能继承一个父类,但是一个类可以由多个类来继承它。
3.Java会给每一个没有设置父类的类,自动添加一个父类就是Object 。
(9)java类继承扩展阅读:
一、子类继承父类的结果
1.子类继承父类后,继承到了父类所有的属性和方法。注:是所有。
2.子类可调用的方法也要看情况而定:
子类和父类在同一个包下时 “子类和子类的对象”可以调用父类的默认的,受保护的,公有的属性以及方法。
子类和父类在不同的包下时,在子类中可以调用受保护的,公有的属性以及方法,而子类的对象可以调用受保护的,公有的属性以及方法。
二、方法的重写
1.当子类和父类都有某种方法,而子类的方法更加要求细致,或者实现功能不同,就需要方法的重写。
2.重写条件
①必须要存在继承关系;只有继承之间的关系才能有方法的重写
②方法的返回值类型,方法名,参数个数,参数类型,参数顺序,必须要完全一致;
如:父类中方法 public void play (int n ; String s){方法体1...}
重写后的子类方法public void play(int n ; String s){方法体2...}
3.子类重写方法时的访问修饰符可以大于或者等于父类方法的访问修饰符。
4.重写后的方法会被优先调用。
三、自动转型
自动转型的实现要求有继承关系
格式如下:父类名 对象名 = new 子类构造方法;
如:Student stu = new UNStudent;
而强制转型格式如下:子类名 对象名 = (子类名)父类对象名
如:UNStudent un = (Student)stu;
自动转型可以拓宽方法的作用访问域
在使用自动转型后,子类自己定义的方法是不能在自动转型后执行;
原因是因为Java的编译机制,它会优先判断父类中是否存在该方法,如果存在则通过编译,如果不存在则报错。
第二种自动转型:转型后只需要不同类的不同对象调用想吐的方法,很方便!
/**访问修饰符 返回值数据类型 方法名(父类类型 参数名,...){
调用方法。
}
父类名 对象名 = new 子类名;
子类名 对象名 = new 子类名;
方法名(对象名);
*/
比如拿到驾驶证为A2的人,可以驾驶重型货车,当然也可以驾驶大型货车,中型货车,小型货车,小客车,小轿车,摩托车... 可以选择第二种自动转型的方法,便于调用同一个方法。
自动转型好处:1.减少冗余代码;2.在方法设置参数时,扩大访问范围。
四、多态
多态是由方法重载,继承,方法重写,自动转型等技术的组合。
五、为什么需要继承?
1.提高代码的重用性。
2.提高程序的扩展性。
JAVA继承总结