30 面向对象的三条主线和面向对象的编程思想?

类与类的成员 : 属性、方法、构造器、代码块、内部类、

面向对象的三大特征:封装、继承、多态【如果还有一个,那就是抽象】

关键字:this、super、abstract、interface、static、package、import、

OOP的编程思想?

- 一切皆对象,任何业务逻辑的实现封装在对象中传递和处理

31 谈谈类和对象的关系,说出你的理解?

- 类是对象的抽象,对象是类的具体实现

- 类是一个模板,对象是模板创建出的实物

32 面向对象的创建、执行、操作、哪三步?

- 编写类和类成员

- 实例化

- 调用对象的属性或者方法

33 类的方法内是否可以定义变量,是否可以调用属性? 是否定义方法 是否调用方法?

- 可以,在方法内定义的变量是局部变量,方法的结束,意味着变量的销毁

- 可以调用属性变量,当属性变量和局部变量同名时,使用this.指代当前对象的引用,表示当前对象的变量

- 方法内不能定义方法、可以调用方法

34 什么是方法的重载?

重载Overload 是同一个类中,具有多个同名方法,它们的参数列表不一样

是实现同一功能的不同途径

如何调用确定的方法,指定方法名,和明确的参数

35 参数传递机制的具体体现?

- 基本数据类型 ,传递变量的数据值

- 引用数据类型,传递变量的地址值,包含变量的数据类型

36 成员变量 和 局部变量 在声明的位置上,是否有默认值?

- 成员变量有,是隐式赋值

- 局部变量没有

是否能用权限修饰关键字修饰?

- 成员变量4个权限修饰皆可

- 局部变量没有

内存分布的位置?

- 成员变量,引用堆空间

- 局部变量,引用栈空间

37 谈谈Return关键字

- 表示方法的结束,在方法内,return之后的语句都不再执行

- 传递返回值,根据方法声明返回类型,方法必须在return后返回一个对应类型的值,可以是表达式

38 构造器的作用?

- 创建本类的实例

- 初始化对象结构

- 重载构造器,实现初始化时注入参数

39 成员变量的赋值方式有几种? 先后顺序?

- 默认赋值 > 显示赋值 > 构造器注入 > setter方法,或者对象调用属性赋值

40 this 关键字可用调用哪些结构

this 属性、方法、构造器、

- 指代当前对象和当前正在创建的对象

- 构造器和setter方法见名知义 ,参数和属性同名,为了区分,用this调用属性变量

41 四个权限访问修饰符是什么? 说明权限范围

- private 指私有的、被修饰的属性、方法、构造器、只能在类的内部访问

- default 默认的,实际上是没有修饰的,被修饰的属性、方法、构造器、只能被所在的包下访问

- protected 受保护的,被修饰的属性、方法、构造器、只能被所继承的子类访问,子类允许放在不同父类的包下

- public 公开的、被修饰的属性、方法、构造器、可以被任意访问调用

42 创建Circle类,提供私有属性radius 提供对应的setter & getter方法 求圆面积

public class Circle {

    private double radius;

    public double getRadius() {
return radius;
} public void setRadius(double radius) {
this.radius = radius;
} public double getRoundArea(){
return 3.14 * radius * radius;
} public static void main(String[] args) {
Circle circle = new Circle();
circle.setRadius( 100.5 );
double roundArea = circle.getRoundArea();
System.out.println(roundArea);
}
}

43 什么是多态性?

- 指对象的多态性,对象可以多种形态 父类引用 指向 子类对象

- 调用方法时,编译看左边,运行看右边

44 一个类可以有几个父类,一个父类可有多少个子类? 子类能直接获取父类中的结构吗?子类能获取private修饰的父类方法吗?

- 一个类只能有一个父类

- 一个父类可以被任意数量的子类继承

- 并不能直接获取,如果父类的一些成员被private修饰,那么子类是无法访问的

- 默认default权限修饰的情况,子类必须和父类同一包下才可访问

- 如果要异包访问,父类的成员必须声明protected

45 重写与重载的区别?

- 重写必须要有一个继承或者实现的关系,必然有个两个类或者是接口和实现类

- 重载的编写在本类中

- 重写是对父类的同一个方法的覆写,重载是对本类同一个方法的不同处理

45.5 重写的具体规则?

- 方法名称一致、形参列表一致、返回类型一致

- 权限修饰不得低于父类或者接口

- 抛出的异常自行处理或者继续抛出

46 super调用构造器有哪些要注意的?

- this() 调用本类构造器

- super() 向上访问父类构造器

47 使用关键字 this,super 重写和继承

// 圆类
public class Circle {
// 半径
private double radius;
// 初始化1
public Circle(){
this.radius = 1;
}
// getter
public double getRadius() {
return radius;
}
// setter
public void setRadius(double radius) {
this.radius = radius;
}
// 求面积
public double getRoundArea(){
return Math.PI * Math.pow(radius,2);
}
} // 圆柱体类
class Cylinder extends Circle{
// 柱长
private double length;
// 初始化1
public Cylinder(){
super();
length = 1;
}
// GETTER
public double getLength() {
return length;
}
//SETTER
public void setLength(double length) {
this.length = length;
}
// 圆柱体积
public double getVolume(){
return getRoundArea() * length;
}
// 圆柱表面积
public double getSurfaceArea(){
// 柱面
final double RECTANGLE_AREA = 2 * Math.PI * getRadius();
// 上底 + 下底
final double UP_AND_DOWN = 2 * getRoundArea();
// 上底 下底 + 柱面
return RECTANGLE_AREA + UP_AND_DOWN;
}
}

48 如何向下转型? 需要注意什么问题? 如何解决?

- 使用强转符()

- 可能出现 ClassCastException 类型不匹配异常

- 使用 instanceof 进行比较,判断对象是否属于此类的实例

49 == 和equals()有什么区别?

- == 是一个操作符,用来取变量的地址值进行比较

- equals是一个方法,在Object类的里面还是使用了==进行比较,但其他继承的类重写了equals,出了地址比较外,还有对实例内容的比较,

50 重写equals方法

class User{
String name;
int age; public boolean equals(Object object){
if (this == object) return true;
else if (object instanceof User){
User user = (User) object;
if (this.age == user .age && this.name.equals(user .name))
return true;
}
return false;
}
}

51 写出8个基本类型的包装类

boolean  Boolean

char   Chracter

byte    Byte

short    Short

int    Integer

long    Long

float  Float

double  Double

52 基本类型和包装类和String三者如何转换?

- 基本数据类型  和 包装类 自动装箱和拆箱

- 包装类 和 String

包装类数值 转 字符串 String.valueOf( 包装类对象 )

字符串 转 包装类数值 Integer.parseInt(字符串)

53 Static修饰的属性,相对于实例变量有哪些特别之处?

- 静态属性 优先 成员属性 加载

- 静态属性在内存空间是唯一的 多个实例访问静态变量都是同一个静态变量,存在在方法区的静态域

- 对象可以this.static修饰的属性进行访问

54 final 可以修饰哪些结构? 分别表示哪些意思?

- 可修饰 类、方法、属性、局部变量

- 修饰局部变量表示,这个变量有且只能有唯一的一次赋值

- 修饰属性,同局部一样,但是可以使用显示声明、构造器注入、代码块注入

- 修饰方法, 表示此方法不能被重写,但是可以被重载

- 修饰类,表示类不能被继承,也表示默认隐式的表示方法不能被重写

55 实现饿汉式,单例模式

class Singleton{
private Singleton(){} private static final Singleton INSTANCE = new Singleton(); public static Singleton getInstance(){
return INSTANCE;
}
}

56 实现懒汉式,单例模式

class Singleton{
private Singleton(){} private static volatile Singleton instance; public static Singleton getInstance(){
if (instance == null) synchronized (Singleton.class) {
if (instance == null) instance = new Singleton();
}
return instance;
}
}

57 类的属性赋值有哪些? 先后顺序?

隐式默认 - 显示初始化 - 代码块初始化 - 构造器注入 - setter注入/对象.属性注入

58 abstract能修饰的有哪些?修饰以后有什么特点?

- 修饰类 该类即为抽象类,不能实例化

- 修饰方法 该方法即为抽象方法 ,不能有方法体存在

59 接口能否继承接口?抽象类是否实现接口?抽象类是否继承非抽象类?

- 接口可以基础接口,还允许继承多接口

- 抽象类可以实现接口,可以不完全实现接口中的抽象方法

- 抽象类可以继承普通类

60 声明抽象类包含抽象方法 创建一个继承抽象类的匿名子类对象

public abstract class AbstractClass {
public abstract void abstractMethod();
} class Impl{
public static void main(String[] args) {
new AbstractClass(){
@Override
public void abstractMethod() {
System.out.println("匿名实例实现");
}
}.abstractMethod();
}
}

61 抽象类和接口有哪些共同点和区别?

- 都不能实例化,可以被继承

- 抽象类有构造器,但是接口没有

- 抽象类只能单继承,接口可以多接口继承

62 如何创建静态内部类和成员内部类?

public class ClassTest {
public static void main(String[] args) {
// 实例化静态内部类
OuterClass.StaticInnerClass staticInnerClass = new OuterClass.StaticInnerClass();
// 实例化成员内部类,必须要有外部类的实例才可以
OuterClass outerClass = new OuterClass(); //先创建外部实例
OuterClass.InnerClass innerClass = outerClass.new InnerClass(); //再通过外部实例调用内部初始化
}
}

【Java】 语言基础习题汇总 [2] 面向对象的更多相关文章

  1. 【Java】 语言基础习题汇总 [1] 基础概念到数组

    1 JDK JRE JVM 三种之间的关系,以及JDK JRE 包含的主要结构有哪些? JDK = JRE + 开发工具 javac.exe java.exe javadoc.exe等等 JRE = ...

  2. 第二十五节:Java语言基础-面向对象基础

    面向对象 面向过程的代表主要是C语言,面向对象是相对面向过程而言,Java是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基 ...

  3. 2018.3.5 Java语言基础与面向对象编程实践

    Java语言基础与面向对象编程实践 第一章 初识Java 1.Java特点 http://www.manew.com/blog-166576-20164.html Java语言面向对象的 Java语言 ...

  4. java语言基础02

    一.Java语言基础(常量的概述和使用)(掌握) 1:什么是常量 就是在程序的执行过程中其值不发生改变的量. 2:Java中常量的分类 (1):字面值常量 (2):自定义常量(面向对象部分讲解) 3: ...

  5. 我的学习目标(目前已初步学习完Java语言基础)

    操作系统.尤其是内存/线程/进程方面 计算机网络协议,重点关注 TCP/UDP/HTTP. 数据结构与算法. 数据库 设计模式,熟练掌握常用的几种设计模式. Java语言基础.熟悉java语言基础,了 ...

  6. 【Java初探02】——Java语言基础

    本篇博文就Java语言的一些基本元素进行一些记录和阐述,主要讲解一下Java语言的一些基本构成元素和Java的主类结构. Java语言基础的大致组成 java主类结构 基本的数据类型 变量与常量 运算 ...

  7. JAVA语言基础内部测试题(50道选择题)

    JAVA语言基础内部测试题 选择题(针对以下题目,请选择最符合题目要求的答案,针对每一道题目,所有答案都选对,则该题得分,所选答案错误或不能选出所有答案,则该题不得分.)(每题2分) 没有注明选择几项 ...

  8. day05<Java语言基础--数组>

    Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java ...

  9. day02<Java语言基础+>

    Java语言基础(常量的概述和使用) Java语言基础(进制概述和二,八,十六进制图解) Java语言基础(不同进制数据的表现形式) Java语言基础(任意进制到十进制的转换图解) Java语言基础( ...

随机推荐

  1. Jenkinsfile里定义对象和函数,获取git提交人, 发送钉钉通知

    自从开始使用Jenkinsfile作为Jenkins配置后就一发不可收,因为开发者自定义CI脚本实在太方便了. 比如,最近开发的以一个项目涉及多人,提交冲突挺多的,有的人自己没编译通过就提交了,导致后 ...

  2. Java基础语法(2)-变量

    title: Java基础语法(2)-变量 blog: CSDN data: Java学习路线及视频 1.什么是变量? 变量的概念 内存中的一个存储区域 该区域的数据可以在同一类型范围内不断变化 变量 ...

  3. HDOJ 1301最小生成树的Kruskal算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1301 将结点的字符信息处理成点信息即可,代码如下: #include<bits/stdc++.h ...

  4. Spring优雅整合Redis缓存

    “小明,多系统的session共享,怎么处理?”“Redis缓存啊!” “小明,我想实现一个简单的消息队列?”“Redis缓存啊!” “小明,分布式锁这玩意有什么方案?”“Redis缓存啊!” “小明 ...

  5. 从SqlSessionFactoryBean的引用浅谈spring两种bean模式

    mybatis是以一个 SqlSessionFactory 的实例为中心的.SqlSessionFactory可以通过SqlSessionFactoryBuilder获得实例.使用mybatis-sp ...

  6. Linux下MySQL的数据库安装

    centos7 + mysql5.7 tar包解压安装 先执行wget https://dev.mysql.com//Downloads/MySQL-5.7/mysql-5.7.18-linux-gl ...

  7. 一份从入门到精通NLP的完整指南 | NLPer

    该小博主介绍 本人:笔名zenRRan,方向自然语言处理,方法主要是深度学习. 未来的目标:人工智能之自然语言处理博士. 写公众号目的:将知识变成开源,让每个渴求知识而难以入门人工智能的小白以及想进阶 ...

  8. Python第六章-函数05-迭代器&生成器

    python作为一个既面向对象,又支持函数式编程的语言,函数的使用方面有很多特点. 比如:闭包,装饰器,迭代器等 函数的高级应用 容器:生活中常见的容器有哪些?袋子,盆子,水杯,书包,铅笔盒... 容 ...

  9. rabbitmq++:RabbitMQ的消息确认ACK机制介绍

    1):什么是消息确认ACK. 答:如果在处理消息的过程中,消费者的服务器在处理消息的时候出现异常,那么可能这条正在处理的消息就没有完成消息消费,数据就会丢失.为了确保数据不会丢失,RabbitMQ支持 ...

  10. mybatis 源码赏析(一)sql解析篇

    本系列主要分为三部分,前两部分主要分析mybatis的实现原理,最后一部分结合spring,来看看mybtais是如何与spring结合的就是就是mybatis-spring的源码. 相较于sprin ...