内部类

定义:将一个类定义到另一个类的里边,里边的类就称为叫做内部类,内置类。
   将内部类定义在它所属的类中,类中分为成员位置和局部位置,因此
   按照位置划分: 成员内部类局部内部类
   按照内部类是否有类名划分:有名内部类匿名内部类

成员内部类

结构:
   class 外部类名 {
      class 内部类名 {
      }
   }
   将类定义在成员位置上,因此该类可以使用成员修饰符进行修饰。

默认内部类:

类中可以定义的成员有:
          非静态成员、静态常量
类中可以直接访问它所属的外部类中的成员:
          私有、静态的、非私有非静态
(内部类,权限修饰符,多态,抽象类)2020.10.22
(内部类,权限修饰符,多态,抽象类)2020.10.22

私有内部类:

使用方式与默认内部类时相同的,只不过在内部类前使用private关键字修饰了,因此
该内部类只能在它所属的外部类中使用,即提供一个方法,在方法中创建内部类对象。
(内部类,权限修饰符,多态,抽象类)2020.10.22

静态内部类:

就是内部类前使用关键字static修饰了。
在该内部类中:既可以定义静态成员也可以定义非静态成员。
(内部类,权限修饰符,多态,抽象类)2020.10.22
(内部类,权限修饰符,多态,抽象类)2020.10.22

局部内部类:

结构:
   class 外部类名 {
     public void 方法名(){
       class 内部类名 {
       }
     }
    }
将内部类定义在局部位置上,即方法中
(内部类,权限修饰符,多态,抽象类)2020.10.22
总结:
创不创建对象,取决于类中的成员是否是静态。

概念:
 1.用来分类管理类文件(包可以形象化为电脑中的文件夹)
 2.class文件与Java源文件相分离
 3.在不同包中出现同名的类
格式:
  package 包名;
  注意:这条语句在一个Java中文件只能出现1次
     这条语句必须写在有效代码行的最上边
  包名:通常都是小写单词或小写字母。
  规范: 公司域名倒置.项目名.模块名.[子模块]*;
     eg: com.ujiuye.cms.login;
  注意: 一旦定义了package语句,那么类名的完整形式为:包名.类名
  带包编译: javac -d 目录 源文件名.java
  带包执行: java 包名.类名
 当定义了package,类名的完整形式有点长,倒置创建对象时编写也有点长,因此想要简化代码,可以使用import关键字来简化,是一个导包的语句。
 格式:
   import 包名.类名; 推荐 或 import 包名.*;
   位置: 在package 和 class 的中间,可以出现多次。
   创建对象时,可以省略”包名.”。
    注意:在不同包中使用时,同一包中不需要import
   总结:
     package : 告诉编译器,当前类要存储在哪
     import :告诉编译器,当前类中使用的其他类去哪找

访问权限修饰符

指的是类中的成员能被访问的权限。
由小到大: private 默认 protected public

当前类 同包下 不同包子类(继承) 所有
private
默认
protected
public

以后定义成员时,选择合适的修饰符来修饰,控制访问的权限。

多态

面向对象的特征:封装、继承、多态
理解:一个对象具有多种形态。
 站在对象的角度来看,可以使用不同类型的引用变量来指向。
 站在引用变量的角度来看,该引用变量可以指向不同类型的对象。
前提:必须有继承或实现。
表现:父类型引用指向(接收)它自己的子类对象。
多态形式访问类中的成员方法时(虚拟调用):
 编译时期:要检查引用变量所属的类型中,是否有要调用的方法,有编译通过,否则失败。
 运行时期:运行的是对象类型中的该方法。
 总结:编译看父类,运行看子类。
好处:
 提高了代码的扩展性 ,代表案例方法参数

转型问题:

向上转型

(基本类型的自动转换) 父类型引用变量指向子类对象。

向下转型

(基本类型的强制转换) 将父类型引用变量转为子类型引用变量,
  格式:(子类类型)父类型引用变量
(内部类,权限修饰符,多态,抽象类)2020.10.22
(内部类,权限修饰符,多态,抽象类)2020.10.22
 以上两行代码编译是没有问题的,但是运行会出现异常。
(内部类,权限修饰符,多态,抽象类)2020.10.22
 类型转换异常,不能将Animal1 转为 Cat1类型。
 总结:做转型时,一定是子类对象的引用变量的类型在改变,一会是父类型引用,一会是自己类型的引用,由始至终对象一直是子类对象。

instanceof

运算符,比较运算符,运算后的结果是boolean类型。
 比较左边的引用变量所指向的对象是否是右边的类型,即判断两边类型是否一致。
 注意:如果判断的类型有父子关系,一定是先判断子类型最后是父类型
    如果是兄弟关系没有顺序了。
(内部类,权限修饰符,多态,抽象类)2020.10.22

抽象类

也是类,只不过是一个特殊的类,这个类有点强制性的感觉。
由来:
当描述Cat类和Dog类时,发现有共性的方法声明,即eat()方法,将共性内容进行向上抽取,抽取到父类Animal中,但是只能抽取方法的声明,因此这个方法是没有方法体的方法,需使用关键字abstract,这样的方法称为叫做抽象方法,抽象方法要在抽象类中。

abstract

抽象的意思,是一个修饰符。可以修饰类和方法。
格式:
  abstract class 类名{}
特点:
 1.抽象方法要在抽象类中
 2.抽象类是不可以实例化的,即不能创建对象
 3.抽象类应该是一个父类,子类继承抽象类,子类想要能创建对象,需将继承的所有抽象方法都重写,否则子类是抽象类。
 因此一个类的修饰符,不可能final和abstract都有
 4.抽象类中可以没有抽象方法,目的就是不让其实例化
成员:
  抽象方法、成员变量、构造方法、成员方法
  注意:抽象类中的成员可以是以上的四种内容,不是要求都同时存在的。

相关文章:

  • 2021-12-26
  • 2022-01-20
  • 2022-12-23
  • 2022-12-23
  • 2021-09-11
  • 2021-08-06
  • 2022-12-23
  • 2021-11-30
猜你喜欢
  • 2021-08-26
  • 2022-12-23
  • 2022-01-08
  • 2021-05-27
  • 2022-12-23
  • 2021-07-02
  • 2021-12-16
相关资源
相似解决方案