java的继承关系
① 如何定义java继承的关系
首先是确定你的对象之间的关系,一般情况下都是由子类来继承父类的东西(比如回属性方法等)在继承的时候答用extend关键字来表示比如有两个类A和B,A继承B那么如下:
public
class
A
{
}
public
class
B
extend
A
{
}
这样的话B类就可以继承和拥有A的所有属性和方法;有不明白的就到这个网址看下吧!http://wenku..com/view/69de2c37f111f18583d05a62.html
② java中子类和父类继承关系的应用
父类更多的是一个继承的作用,比如我现在需要制作好多家具,但是这些家具专都有一些共同特性:都是实属木,加工程序,销售程序等,然后沙发有沙发的特性,桌子有桌子的特性,定义类的继承主要是为了更好的拓展,比如某天我所有的家具的加工程序突然都改变了,如果没有父类,我是不是要在所有的子类里面都去重新修改加工程序?但是如果这些家具都继承了同一个父类的话,我就只需要修改父类(也就是家具)的加工程序,就不需要沙发、桌子什么的都修改了。。
而父类的作用还不仅如此,比如我现在需要执行“加工”这一方法,但是我不知道是执行加工沙发还是执行加工桌子,那么久直接选择执行加工家具了,类的继承一个是方法属性的继承,还有就是一种规范(跟接口一样)。。
③ Java中继承关系的理解
很简单 流程问题
创造子类对象时候 先调用父类无参构造方法
所以先运行
public P()
{
System.out.println("P constructor");
output();
}
然后调用output();
public void output()
{
System.out.println("P.output(),val+"+val);
}
这里是重点 因为子类存在private int val = 1; 覆盖了private int val = 10; 但是这个时候并没有读到private int val = 1所以是默认值0
最后调用
public A(int val)
{
this.val = val;
System.out.println("A constructor");
}
所以就是
P constructor
A.output(),val=0
A constructor
④ java语言的类间的继承关系是
Java语言中的类只支持单继承,而接口支持多继承。
Java中多继承的功能是通过接口(interface)来间接实现的。
JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。
继承分为单继承和多重继承。单继承是指一个子类最多只能有一个父类。多继承是一个子类可以有二个以上的父类。由于多继承会带来二义性,在实际应用中应尽量使用单继承。
继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。[1] Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。
⑤ 如何查看java类的继承关系
publicclass查看
{
publicstaticvoidmain(String[]args)
{
System.out.println(" ==========如何查看java类的继承关系========== ");
init();
}//初始化!
privatestaticvoidinit()
{
Dogd=newDog();
Animala=newAnimal();
//查看对象超类!
Strings=d.getClass().getGenericSuperclass().toString();
Stringr=a.getClass().getSuperclass().toString();
System.out.println("对象超类:"+s);//获取对象类的超类!
System.out.println("对象超类:"+r);//获取对象类的超类!
}
}
classAnimal//动物超类!
{
}
classDogextendsAnimal//够继承动物!
{
}
⑥ JAVA如何判断两个类之间是否满足继承关系
Class中有个方法 public native boolean isAssignableFrom(Class<?> cls)用来判断子类是否继承于父类的或者父接口的。
你会这样子写:
Class clazz = ....;
clazz.isAssignableFrom(子类名称);返回说明是挂号里的类的父类或父接口。
clazz.isAssignableFrom(子类名称)里的子类名称跟版本有关,好像是1.5以上的JDK这里的子类名称都是使用的泛型编程。即传的传数是
class<T> 类型的,你用的时候自己斟酌下版本问题。
而常用的instanceof(class ..)是指该实例是否属于挂号中的类的父类的一个实例。
如上面的例子:
class A{
}
public class B extends A{
public static void main(String[] args){
Class clazz = B.class;
Class class1 = A.class;
System.out.println(class1.isAssignableFrom(clazz));
if(class1.isAssignableFrom(clazz)){
System.out.println("A是B的父类");
}else{
System.out.println("A不是B的父类");
}
}
}
接口的话也一样的:如下
public interface A {
}
public class B implements A{
public static void main(String[] args) {
Class clazz = B.class;
Class class1 = A.class;
System.out.println(class1.isAssignableFrom(clazz));
if(class1.isAssignableFrom(clazz)){
System.out.println("A是B的父类");
}else{
System.out.println("A不是B的父类");
}
}
}
你测试时只需要把extends A和implements A去掉那就是A不是B的父类或者父接口的情况。 这就是java反射机制的精髓啊
⑦ Java的IO操作中各种类的继承关系是怎样的
这是以前学习流时候的笔记,希望对你有用--------------------------------------------------------------------------------------------------IO流有三种分类方式:
一、按流的方向分为:输入流和输出流;
二、按流所处理的数据类型划分为:字节流和字符流;
三、按流的功能不同分为:节点流和处理流。
字节流: 可以从/向一个特定的I/O设备读/写数据的流,成为字节流。也称为低级流。
InputStream/OutputStream 字节
字符流
Reader,Writer
处理流: 实现对一个已存在的流的连接与封装,通过所封装的流的功能调用实现数据读/写功能的流。也称高级流。
处理流-输入流 字符输入流:InputStreamWriter/ 输入处理流:BufferedReader
处理流-输出流 字符输出流:OutputStreamWriter/ 输出处理流:BufferedWriter PrintStream PrintWriterFileInputStream 读取文件流
FileOutputStream写文件流用高级流封装低级液压,看低级流指向的设备而决定操作的对象指向设备的流
System.in 标准输入设备(从键盘输入)
System.out 标准输出设备(从控制台输出)
FileInputSteam 文件输入流
FileOutputStream 文件输出流
⑧ java中的继承关系
A答案本身就是有错的,interface是定义接口,下边就不能用extends,而应该用implements
B答案的作用是:son这个类继承了Father这个类,就体现了继承关系
C答案是先定义了一个抽象类:Colorable,下边Shape这个类继承了Colorable这个类。抽象类是可以被继承的。也体现了继承关系
D答案只是把Species的一个引用作为了Animal类的一个属性。没有体现继承。而且跟继承一点关系也没有
E答案是Employee实现了Person接口,并会实现接口里的所有抽象方法。所以也是体现了继承的
⑨ java中用来定义类间继承关系的关键字是什么
继承extends的使用规则
继承的特点
1.只支持单继承
2.子类继承得到父类的成员变量和成员函数,不能继承父类的构造函数
3.子类可以编写自己的成员变量和成员函数
4.同时修改多个子类的共同拥有的成员变量和成员函数(例如同时修改StudentExtends.java和TeacherExtends.java中的成员变量和成员方法)
5.子类的构造函数在调用时,必须先执行父类的构造函数,没有显性(super)的调用父类的构造函数时,子类构造函数默认调用父类无参数的构造方法super()
6.super调用构造函数必须位于第一句与this用法相同
⑩ java中继承关系
B是子类啊大哥,你在试图让子类引用指向父类的instance,当然编译不通过啊。你要么强制类型转换: B bb=(B) aa;