目录
2、访问修饰符 public,private,protected,以及不写(默认)时的区别?
5、short s1=1; s1 = s1 + 1; 有错吗? short s1=1; s1+=1; 有错吗?
1、面向对象的特征有哪些方面?
-
抽象
抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
-
继承
继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段。
-
封装
通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口。
-
多态性
多态性是指允许不同子类型的对象对同一消息做出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做出了不同的事情(行为)。多态性分为编译时的多态性和运行时的多态性。
-
在方法重载时,都是编译时多态。在编译期可根据参数的数据类型、个数以及次序来确定调用方法
-
在方法重写中,当子类对象引用自身类实例方法时,为编译时多态。但是当父类对象引用子类实例方法时(也就是上转型对象时,父类声明,子类实例化),为运行时多态,因为此时只有在运行时才可以去匹配到对应方法进行调用。
-
2、访问修饰符 public,private,protected,以及不写(默认)时的区别?
修饰符 | 当前类 | 同一包内 | 子类 | 其他包 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
类的成员不写访问修饰符时默认为 default。 默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。Java 中,外部类的修饰符只能是 public 或默认,类的成员(包括内部类)的修饰符可以是以上四种。
3、String 是最基本的数据类型吗?
不是。Java 中的基本数据类型只有8个: byte、short、int、long、float、double、char、boolean
; 除了基本类型(primitive type),剩下的都是引用类型(reference type), Java 5 以后引入的枚举类型也算是一种比较特殊的引用类型
4、float f=3.4;
是否正确?
不正确。3.4 是双精度浮点数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换 float f=(flaot)3.4;
或者写成 float f = 3.4F;
验证截图:
5、short s1=1; s1 = s1 + 1;
有错吗? short s1=1; s1+=1;
有错吗?
对于 short s1 = 1; s1 = s1 +1;
由于 1
是 int
类型,因此 s1+1
运行结果也是 int
型,需要强制转换类型才能赋值给short 型。 而 short s1 = 1 ; s1 += 1;
可以正确编译,因为 s1 +=1; 相当于 s1 = (short)(s1+1);
其中隐含的强制类型转换。
验证截图: