如何判断java的一个类能否继承另一个类? 还有在new实例化一个对象时候有啥限制,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断java的一个类能否继承另一个类? 还有在new实例化一个对象时候有啥限制,相关的知识,希望对你有一定的参考价值。

比如接口能不能直接被new new的等号左右边的类有什么要求。 最后希望大家推荐一本实用的巩固java基础的书籍 不要太乱太杂的书! 呵呵

接口是不能被new的 含有抽象方法的都不能直接被new
用new实例化对象,要看你所要实例化对象的类得构造方法的限定修饰词,如果为private
那么只能有单例模式获取该类的对象追问

private 可以用单例获取? 能给个例子吗 我基础比较弱呵呵

追答

public class A
private static A a;
private A()


public static A getInstanceOfA()

if(a==null)

a=new A();

return a;



其他类要获得A类的对象 ,就调用 A类的getInstanceOfA()方法即可获得一个对象
public class B
A a=A.getInstanceOfA();

参考技术A new的时候,就实现的类。接口不能new自己。因为它没有具体的实体化方法,只是声明。
判断是否继承的问题,在一个父类A里面,写几个方法。在子类B类中用extends 继承的关键字继承,就会把父类的方法继承过来,当你没有写的时候。就会报错。你可以看看。其实就是这样追问

您可能误解了我的意思 我是想问 我遇到了一个面试题
如果给你一个类 然后有4个选项(四个类) 问你哪个类可以继承给出的那个类
怎么来判断选择

参考技术B “如何判断java的一个类能否继承另一个类”
这个看有无共同属性
好比车,汽车,自行车都可以继承它,公共汽车,小轿车又都可以继承汽车。
继承其实就是为了方便处理有共同特征的类的
其实你想继承什么都可以,没有限制的,不过继承一个不搭嘎的类,又有什么用呢。
“还有在new实例化一个对象时候有什么限制”
都说实例化对象了,只能是实例化的对象,接口,抽象类都不行。
think in java(java编程思想)第四版。
参考技术C 张孝祥的《java 开发实战》非常好的一本书
从内存上讲的,这一点非常难能可贵
看懂了这本书,能独立编程解决问题,基础就可以了。
参考技术D 可以用java的反射机制取得一个类的完整结构,包括它的父类,实例化的时候没什么限制。至于基础的书自己看去

如何判断一个 Swift 类是继承自另一个类还是符合协议?

【中文标题】如何判断一个 Swift 类是继承自另一个类还是符合协议?【英文标题】:How can you tell if a Swift class is inheriting from another class or is conforming to a protocol? 【发布时间】:2014-07-04 13:55:01 【问题描述】:

例如,如果我们有一个类Foo,它继承自类Bar,并符合协议Baz

class Bar 

protocol Baz 

class Foo: Bar, Baz

如果我们事先不知道Bar 是一个类而Baz 是一个协议怎么办(例如,在阅读别人的代码时)。 在这种情况下,由于class Foo: 之后有多个声明,它可能很清楚。在 Swift 中,协议一致性声明必须在继承子句中的超类声明之后。另一方面,这也可能是一个没有继承的类,符合多种协议。

如果继承子句中只有一个声明呢?

class Foo: Bar 

或者:

class Foo: Baz 

在 Objective-C 中,协议名称用尖括号括起来是很清楚的。在 Swift 中,尖括号用于泛型。是否有语法支持使协议一致性在这种情况下更加直观?

【问题讨论】:

一旦Baz 开始警告您有未实现的必需方法,Bar 不会这样做,差异会不会变得明显?我的意思是,在类的使用上,几乎没有区别,对吧?您将尝试将其作为特定类型的对象,而该特定类型可能是协议。 例如,在Objective-C中,for (id<NSObject> obj in myArray)for(NSObject *obj in myArray)之间的区别是完全不存在的。这一行中的语法看起来不同,但循环中的用法是相同的。为什么它是协议还是类很重要? (也可以右键-godefintion) 命名约定怎么样?协议可以是BazProtocolBazDelegate——取决于协议的目的——如果你阅读headerextension 可以快速识别它类。 另外,补充一点,一个类可以符合多个协议,所以class Foo: Bar, Baz 不保证Bar是一个超类,只是保证Baz是一个超类协议。 你是对的。但这里的主要观点是,我认为 Bryan 并不是在谈论他编写的一个类,它是他编写的协议的子类/符合协议。他说的是查看其他人编写的项目(或至少项目的子集),并且他希望能够轻松识别这是子类还是仅符合协议。他没有办法回到过去并修复不表明前开发人员或他以前的自己留下的类/协议的糟糕命名约定。 【参考方案1】:

Swift 处理协议的方式与处理类型的方式大致相同。这是设计使然,其后果之一是在许多情况下难以立即区分协议一致性和类继承。

这是正面还是负面的事情是一个见仁见智的问题,有待讨论。因此,我不会解决它。

更多实用方面:

识别给定关键字是指Protocol 还是Class 的最快方法是option-click关键字。以下是在每种情况下这样做的结果:

当然,这只有在您阅读 Xcode 上的代码时才有意义。

【讨论】:

以上是关于如何判断java的一个类能否继承另一个类? 还有在new实例化一个对象时候有啥限制,的主要内容,如果未能解决你的问题,请参考以下文章

20165221 JAVA第四周学习心得

java 怎么判断一个类是不是继承了某接口

阿里P8传授的80K+星的Java教程:什么是继承?Java中如何声明一个类继承另一个类?的笔记助我修行,我终于“硬”了一回

java中如何判断对象?

java中有哪些类型的方法,如何调用它们?

面试官问: 枚举类能否继承类和实现接口,你可以这样回答