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细节的主要内容,如果未能解决你的问题,请参考以下文章

Java 封装

Java 封装

Java 封装

Java 封装

Java 封装

Java 封装