Java面试集合(六)

1. abstract抽象

什么是abstract,中文为抽象,从具体事物抽出,概括它们共同的方面,本质属性与关系等,称为抽象。看不见,摸不着的东西叫做抽象,抽象是人们对世界万物的感觉,用特定的图像表达出来,要理解抽象的东西,就必需从内心感受它们。

什么是抽象类

抽象类的定义和使用格式

abstract class 类名{
       类体
}
class 类名 extends 抽象类 {
          //实现全部抽象方法
}

抽象类,用abstract修饰的类为抽象类,一个类如果它的所有子类都重写了这个方法,那么给它添加抽象的声明,那么这个类就为抽象类。

那么这个抽象方法的类就为抽象类,具有抽象方法的类为抽象类,但抽象类不一定具有抽象方法,抽象类中可以有构造方法,不能创建对象。

抽象类中如果有抽象方法,那么子类继承这个抽象类之后,就必须要重写抽象类中的 所有抽象方法。

一个类用abstract进行修饰为抽象类,那么这个抽象类不能在用final来修饰了,抽象类是类对象的抽象集合,抽象类使用abstract关键字修饰,abstract不能与final并列修饰同一个类。

对于抽象方法,不能在用staticfinalprivate来修饰

在抽象类中具体抽象的是属性和行为,在抽象类中,含有抽象方法的类为抽象类,一定是抽象类,但抽象类中不一定含有抽象方法。

案例:

//抽象类:作为抽象方法是可以重载的
public abstract class Person {
 public abstract void run();
}

//子类继承抽象类
public class Studentone extends Person{
 @Override
 public void run(){
  System.out.println("人会跑");
 }
}

//测试
public class Test {
 public static void main(String[] args){
  Person person = new Student();
  person.run();
 }
}

//结果
人会跑

2. 接口

什么是接口(interface)

接口中的方法都是抽象方法public权限,全是抽象函数,不能生成对象

interface Student{
public void read();
public void write();
}

class ChineseStudent implements Student{
//复写
public void read(){
 System.out.println("read");
}
public void write(){
 System.out.println("write");
}
}

class Test{
public static void main(String args[]){
 ChineseStudent chinesestudent = new ChineseStudent();
 Student student = chinesestudent;

 student.read();
 student.write();
}
}

接口的定义和使用格式

interface 接口名 {
          [public] [static] [final] 变量;
          [public] [abstract] 方法;
}
class 类名 implement 接口列表 {
          //实现所有接口中声明的方法
}

什么是接口呢?这个类中所有的方法都是抽象方法。

接口不同抽象,没有构造方法,接口不是一个类。

接口中也不能创建对象,抽象方法也不能。

JDK1.8以前,interface来定义接口,通过implements关键字让接口和类产生关系,类实现接口,要重写接口中的所有抽象方法。

Java中只有单继承,多实现,一个类可以继承一个父类,但一个类可以实现多个接口。

实现接口用implements关键字,
一个接口可以实现多个接口,
一个接口可以继承多个接口
interface Student{
public void read();
public void write();
}

interface Teacher{
public void teach();
public void test();
}

class Person implements Student,Teacher{
public void read(){
 System.out.println("read"):
}
public void write(){
 System.out.println("write");
}
public void teach(){
 System.out.println("teach"):
}
public void test(){
 System.out.println("test"):
}
}
// 测试
class Test{
public static void main(String args[]){
 Person person = new Person();

 Student student = person;
 student.read();
 student.write();

 Teacher teacher = person;
 teacher.teach();
 teacher.close();
}
}

接口解决了多继承的问题,将多继承的这种机制在java中通过接口实现了,接口与接口之间是继承的关系。

interface A{
 void showa();
}
interface B{
 void showb();
}
class C implements A,B{
 public void showa(){};
 public void showb(){};
}

接口中的属性默认是使用public static final修饰的

interface A {
void add();
}
class B implements A {
 // 接口中的方法默认是使用public修饰
void add(){}
}

实现多接口,存在方法名一致时,会导致方法重写的时候产生歧义。

抽象类和接口比

  • 抽象类是对类抽象,而接口是对行为的抽象。
  • 抽象类为继承关系,接口为实现类与接口之间的契约关系。
  • 抽象类为单继承,接口为多“继承”。子类只能继承一个抽象类,但可实现多个接口。

代码

//抽象类
abstract class Person {
 abstract void run();
 abstract void jump();
}

//接口
interface School{
 void go();
}

//实现
class Student extends Person implements School{
 void run();
 void jump();
 void go();
}

抽象类中成员变量默认为friendly,函数修饰符public,protected,default

接口属性为静态public static final成员函数为public

3. 内部类

内部类的分类:

  • 静态内部类
  • 局部内部类
  • 成员内部类
  • 匿名内部类
// 外部类
class Demo{
 private int num = 3;
 // 定义内部类
 class Int{
  void show(){
   System.out.println("num="+num);
  }
 }

 void method(){
  Int int = new Int();
  int.show();
 }
}

class Inner{
 public static void main(Stirng[] args){
  Demo demo = new Demo();
  demo.method();
 }
}

内部类有 非静态,静态,匿名类

语法:

new 外部类().new 内部类()

成员内部类:

在成员变量的位置上定义的类为成员内部类。
如果要使用成员内部类就要使用外部类.内部类来访问。

静态内部类:

在成员位置上用static修饰的内部类为静态内部类。

静态内部类只能访问外部类的静态成员和本内部类的成员;且不能访问外部类的非静态成员

匿名内部类:(对应类的子类或者对应接口的实现类)

是一种特殊的局部内部类。

访问外部类中的内部类,非静态

Outer.Inner int = new Outer().new Innter();

对静态内部类中的非静态成员

Outer.Inner int = new Outer().new Innter();

static声明的内部类,则内部类变成外部类,用static声明的内部类不能访问非static的外部类属性,外部类的属性要用static才能访问。

内部类可以使用外部类所有的方法和变量,就算被私有化也一样可以,如:

class Outer{
 private int x;
 // 创建内部类的实例
 Inner inner = new Inner();
 public void do(){
  // 调用内部类的方法
  inner.go();
 }
 // 内部类
 class Inner{
  void go(){
   x = 30;
  }
 }
}

4. 包

java中提供了不同的类和接口存放在不同的包中。

常见的包

java.applet
java.awt
java.net
java.util
java.lang
java.awt GUI
java.io 数据传输
java.math  数学运算
java.nio 高并发
java.net  网络编程
java.text  格式化
java.sql  和数据库交互

包的格式:

package 包名[.子包名[…]];

引入java

import  包层次结构的类名;

垃圾分代回收机制

垃圾分代回收机制针对堆内存,所有内存由Java自动分配到回收,垃圾收集器。

结语

  • 下面我将继续对JavaAndroid中的其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

原文地址:https://www.cnblogs.com/dashucoding/p/9534737.html

时间: 2024-10-04 00:09:53

Java面试集合(六)的相关文章

Java面试集合(四)

1. jdk,jre,jvm之间的关系 JVM是Java虚拟机,是Java跨平台的重要保障,JVM实现Java跨平台的前提,可以针对不同的操作系统,有不同的JVM. 可以说Java语言是跨平台的,但JVM不是. JRE是Java运行时环境,包含JVM+核心类库. JDK是Java开发工具包,包含开发工具+JRE. 2. Java的分类 - JAVASE.JAVAEE.JAVAME JavaSE为标准版,JavaEE为企业版,JavaME为微型版 3. Java中关键的保留字 Java中有两个关键

Java之集合(六)PriorityQueue

转载请注明源出处:http://www.cnblogs.com/lighten/p/7299233.html 1.前言 本章介绍队列中的PriorityQueue--优先队列,顾名思义,这是一个可以指定特定排序的队列.有些违背队列的先入先出,但是其是按照有序的出队列,也是一个比较实用的类. 2.PriorityQueue PriorityQueue继承自抽象父类AbstractQueue,其数据结构依旧保持简单: 一个数组队列,一个大小,一个排序规则的比较器.如果比较器为null的时候,就按照元

Java大厂笔试&&面试集合大全目录

面试技巧 掌握面试技巧,提升自身软实力! HR面试都会问什么问题?(上) HR面试都会问什么问题?(下) 作为一技术人员,面试前都需要做哪些准备? 面试题 Java各个阶段面试题,帮你提升自我,拿到高薪! Java面试集锦:25道线程类相关面试题与答案(一) Java面试集锦:集合思维导图与30道集合面试题 通过面试题,让我们来了解Collection 跳槽季,金三已过,银四你准备好了吗? 面试必备的数据库悲观锁与乐观锁 框架类 Spring面试题集锦(精选) 笔试题 JAVA相关笔试题,祝各位

六:Java之集合

集合包含的内容很多,我发现一个很好的博客,感觉自己都没有写的必要了! 链接献上  Java集合 六:Java之集合,布布扣,bubuko.com

【JAVA秒会技术之秒杀面试官】秒杀Java面试官——集合篇(一)

[JAVA秒会技术之秒杀面试官]秒杀Java面试官--集合篇(一) [JAVA秒会技术之秒杀面试官]JavaEE常见面试题(三) http://blog.csdn.net/qq296398300/article/category/6876287

Java面试准备十六:数据库——MySQL性能优化

这里只是为了记录,由于自身水平实在不怎么样,难免错误百出,有错的地方还望大家多多指出,谢谢. 来自MySQL性能优化的最佳20+经验 为查询缓存优化你的查询 EXPLAIN你的SELECT查询 当只要一行数据是使用LIMIT 1 为搜索字段建索引 在Join表的时候使用相当类型的列,并将其索引 千万不要ORDER BY RAND() 避免SELECT * 永远为每张表设置一个ID 使用ENUM而不是VARCHAR 从PROCEDURE ANALYSE() 取得建议 尽可能的使用NOT NULL

JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)

hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好Hibernate. 比起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项目需求

【Java 面试】面试

一. 笔试题之Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他.有些题来自网上搜集整理,有些题来自传智播客学员面试后的反馈,说真的,少数一些网上的面试题,我真怀疑其是否还有存在价值! 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有没有goto?

Java面试宝典2013版(超长版)

一. Java基础部分......................................................................................................2 1.一个".java"源文件里能否够包含多个类(不是内部类)?有什么限制?.....2 2.Java有没有goto?........................................................................