java细节
Posted qianyue111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java细节相关的知识,希望对你有一定的参考价值。
1. super() 与 this() 的区别?
This():当前类的对象,super 父类对象。
Super():在子类访问父类的成员和行为,必须受类继承规则的约束
而 this 他代表当前对象,当然所有的资源都可以访问. 在构造函数中,如果第一行没有写super(),编译器会自动插入.
但是如果父类没有不带参数 的构造函数,或这个函数被私有化了(用 private 修饰).此时你必须加入对父类的实例化构 造.
而 this 就没有这个要求,因为它本身就进行实例化的构造. 而在方法中 super 和 this 使用的方法就差不多了.只不过 super 要考虑是否能访问其父类 的资源.
2,什么是面向对象?
面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;
这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种优化,操作起来更加的方便,简化了过程。
面向对象有三大特征:封装性、继承性、多态性,
其中封装性指的是隐藏了对象的属性和实现细节,仅对外提供公共的访问方式,这样就隔离了具体的变化,便于使用,提高了复用性和安全性。
对于继承性,就是两种事物间存在着一定的所属关系,那么继承的类就可以从被继承的类中获得一些属性和方法;这就提高了代码的复用性。继承是作为多态的前提的。
多态是说父类或接口的引用指向了子类对象,这就提高了程序的扩展性,也就是说只要实现或继承了同一个接口或类,那么就可以使用父类中相应的方法,提高程序扩展性,但是多态有一点不好之处在于:父类引用不能访问子类中的成员
其特点是:
1:将复杂的事情简单化。
2:面向对象将以前的过程中的执行者,变成了指挥者。
3:面向对象这种思想是符合现在人们思考习惯的一种思想。
3. 作用域 public,protected,private, public写以及不写时的区别?
Public:不同包、同一包、类内都可用
Private:类内
Protected: 不同包的子类、同一包、类内都可用
不写时:同一包内、类内
4,Java中instanceof关键字的理解
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
但是instanceof在Java的编译状态和运行状态是有区别的:
在编译状态中,class可以是object对象的父类,自身类,子类。在这三种情况下Java编译时不会报错。
在运行转态中,class可以是object对象的父类,自身类,不能是子类。在前两种情况下result的结果为true,最后一种为false。但是class为子类时编译不会报错。运行结果为false。
例子: 接口Person public interface Person { public void eat(); } 实现类People public class People implements Person { private int a=0; @Override public void eat() { System.out.println("======"+a); } } 子类xiaoming: public class xiaoming extends People { private String name; @Override public void eat() { System.out.println("+++++++++"); } } 主函数 public static void main(String[] args) { People p=new People(); xiaoming x=new xiaoming(); System.out.println(p instanceof Person); System.out.println(p instanceof xiaoming); -----2 System.out.println(x instanceof Person); System.out.println(x instanceof People); } 注意:上面2处的代码在编译时不会报错。 运行结果: true false true true
以后会不定时更新哦!
以上是关于java细节的主要内容,如果未能解决你的问题,请参考以下文章