你是怎样理解面向对象的2、你是怎样理解多态的?什么地方用过?3、举例说明封装和继承是怎么回事?4、char型变量能不能储存一个中文汉字,为什么? 5、什么是自动拆装箱? int和Integer有

本文介绍了面向对象的四大特性——继承、封装、多态和抽象。封装通过get/set方法保护数据,继承允许子类继承父类属性和方法。多态表现为父类引用可指向子类对象,不同子类对同一方法响应不同。文章还讨论了char类型存储中文、自动装箱拆箱以及Integer对象的缓存机制,并通过代码示例展示了这些概念。最后,通过分析Integer对象相等性的例子,解释了常量池和对象引用的比较原则。
摘要由CSDN通过智能技术生成

1,你是怎样理解面向对象的

面向对象是利于语言对现实事物进行抽象。面向对象具有以下四大特征:
(1)继承:继承是从已有类得到继承信息创建新类的过程
(2)封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。
(3)多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。
(4)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。

自己的话描述:
封装:就是把属性和get set 方法绑定起来,对数据的访问只能通过get set 方法。
继承:就是继承父类的方法和属性并且创建不同于父类的类
多态:父类引用指向子类对象,不同的子类,对相同的方法,做出不同的响应。
抽象:抽象是将一类对象的共同特征总结出来,构造类的过程。

2、你是怎样理解多态的?什么地方用过?

在这里插入图片描述
自己的话
同一个行为具有多个表现形式

3、举例说明封装和继承是怎么回事?

在这里插入图片描述
封装比如说将 name 和 age 属性设置为私有的对信息进行了隐藏提供对外的公共方法访问,用于对私有属性的访问。

public class Person{ 
private String name; 
private int age;  
public int getAge(){ return age; }  
public String getName(){ return name; } 
public void setAge(int age){ this.age = age; }  
public void setName(String name){ this.name = name; } 
}

在这里插入图片描述

4、char型变量能不能储存一个中文汉字,为什么?

char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节

5、什么是自动拆装箱? int和Integer有什么区别?以及以下程序运行结果。

八种基本数据类型分别是:
4种整数类型(byte、short、int、long);
2种浮点类型(float、double);
1种字符类型“char”
1种布尔类型“boolean”。

基本数据类型,如**int,float,double,boolean,char,byte,**不具备对象的特征,不能调用方法。
装箱:将基本类型转换成包装类对象
拆箱:将包装类对象转换成基本类型的值
java为什么要引入自动装箱和拆箱的功能?主要是用于java集合中,List list=new ArrayList();
list集合如果要放整数的话,只能放对象,不能放基本类型,因此需要将整数自动装箱成对象。
实现原理:javac编译器的语法糖
区别:
(1)Integer是int的包装类,int则是java的一种基本数据类型
(2)Integer变量必须实例化后才能使用,而int变量不需要
(3)Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
(4)Integer的默认值是null,int的默认值是0

常量池在java中用于保存编译期已经确定的,它包括了关于类,方法,接口中的常量,也包括字符串常量。例如
String s = “Java” 这种声明的方式。产生的这种"常量"就会被放到常量池,常量池是JVM的一块特殊的内存空间。
使用Java常量池技术,是为了方便快捷地创建某些对象,当你需要一个对象时候,就去这个池子里面找,找不到就在池子里面创建一个。但是必须注意 如果对象是用new 创建的。那么不管是什么对像,它是不会放到池子里的,而是向堆申请新的空间存储。
java中基本类型的包装类的大部分都实现了常量池技术,这些类是Byte,Short,Integer,Long,Character,Boolean,另外两种浮点数类型的包装类则没有实现。另外Byte,Short,Integer,Long,Character这5种整型的包装类也只是在对应值小于等于127时才可使用对象池。超过了就要申请空间创建对象了
”==“ 我们知道比较的是引用的地址(其实java不要允许用户直接对内存进行操作的的)。

当我们使用Integer a = 127 的时候 实际上调用的是下面这个方法:

  public static Integer valueOf(int i) {
         assert IntegerCache.high >= 127;
         if (i >= IntegerCache.low && i <= IntegerCache.high)
             return IntegerCache.cache[i + (-IntegerCache.low)];
         return new Integer(i);
     }
因为java 默认大于等于128 会重新开辟一个地址
1.	package com.atguigu.interview.chapter03;  
2.	  public class Test01 {  
3.	    public static void main(String[] args){  
4.	        Integer a = 127;  
5.	        Integer b = 127;  
6.	        Integer c = 128;  
7.	        Integer d = 128;  
8.	        System.out.println(a==b); //true  
9.	        System.out.println(c==d); //false  
10.	    }  
11.	}  
Java常量池 即如果 数在 -128127之间 就返回池子中的对象。没有的话就创建
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
封装是一种面向对象的编程概念,它将数据和操作数据的方法组合成一个单元,即类。封装可以隐藏数据的实现细节,提供对外的接口来访问和操作数据。通过封装,我们可以将复杂的系统简化为更易于理解和使用的模块。 继承面向对象编程中实现代码重用的一种机制。通过继承一个类可以继承一个类的属性和方法,从而减少代码的重复编写。继承可以建立类之间的关系,使得类与类之间形成父子关系,子类可以继承父类的特性,同时可以添加自己的特性或对父类进行修改。 多态面向对象编程的重要特性之一。它允许不同的对象对同一消息做出不同的响应。多态性可以通过继承和虚函数来实现。静态多态是指在编译时确定调用的函数,而动态多态是指在运行时根据对象的实际类来确定调用的函数。动态多态主要由虚函数实现,它允许我们在父类中声明一个虚函数,然后在子类中重写这个函数,实现不同的行为。 举个例子来说明动态多态和静态多态的区别。假设有一个Animal类和一个Tiger类,Tiger类是Animal类的子类。在Animal类中有一个虚函数call,在Tiger类中重写了这个函数。当我们使用Animal类的对象调用call函数时,如果对象实际上是Tiger类的对象,那么将调用Tiger类中的call函数,这就是动态多态。而静态多态则是在编译时确定调用的函数,无法根据对象的实际类来决定调用哪个函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月常新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值