美文网首页
面向对象基础

面向对象基础

作者: chrisghb | 来源:发表于2019-12-23 13:11 被阅读0次
  • 为了避免向下转型出错,Java提供了instanceof操作符,可以先判断一个实例究竟是不是某种类型。
    可以使用instanceof操作符判断是否一个类实现了某个接口,也可以用它来判断一个实例对象是否属于一个类。
  • 加上@Override可以让编译器帮助检查是否进行了正确的覆写。希望进行覆写,但是不小心写错了方法签名,编译器会报错。但是@Override不是必需的。
  • 多态的特性就是,运行期才能动态决定调用的子类方法。对某个类型调用某个方法,执行的实际方法可能是某个子类的覆写方法。
  • final修饰符有多种作用:
    final修饰的方法可以阻止被覆写;
    final修饰的class可以阻止被继承;
    final修饰的field必须在创建对象时初始化,随后不可修改。
  • 继承extends
    继承有个特点,就是子类无法访问父类的private字段或者private方法。我们需要把private改为protectedprotected关键字可以把字段和方法的访问权限控制在继承树内部,一个protected字段和方法可以被其子类,以及子类的子类所访问。
    -super
    super关键字表示父类(超类)。子类引用父类的字段时,可以用super.fieldName
    任何class的构造方法,第一行语句必须是调用父类的构造方法。如果没有明确地调用父类的构造方法,编译器会帮我们自动加一句super();,所以,Student类的构造方法实际上是这样:
class Student extends Person {
    protected int score;

    public Student(String name, int age, int score) {
        super(); // 自动调用父类的构造方法
        this.score = score;
    }
}
  • 抽象类abstract
    因为抽象类本身被设计成只能用于被继承,不能被实例化。因此,抽象类可以强迫子类实现其定义的抽象方法(没有具体执行代码),否则编译会报错。因此,抽象方法实际上相当于定义了“规范”。
  • 接口interface
    所谓interface,就是比抽象类还要抽象的纯抽象接口,因为它连实例字段都不能有。因为接口定义的所有方法默认都是public abstract的,所以这两个修饰符不需要写出来。
    当一个具体的class去实现一个interface时,需要使用implements关键字。
    Java中,一个类只能继承自另一个类,不能从多个类继承。但是,一个类可以实现多个interface

抽象类是对本质的抽象,接口是对动作的抽象。
抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。
使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。

abstract class interface
只能extends一个class 可以implements多个interface
可以定义实例字段 不能定义实例字段
可以定义抽象方法 必须定义抽象方法
可以定义普通方法 不能定义普通方法
可以包含初始化块 不能包含初始化块
可以定义非抽象方法 可以定义default方法

注意:接口中定义函数,而在抽象类中定义默认的实现
default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类。如果新增的是default方法,那么子类就不必全部修改,只需要在需要覆写的地方去覆写新增方法。

  • 静态字段和静态方法static
    实例字段在每个实例中都有自己的一个独立“空间”,但是静态字段只有一个共享“空间”,所有实例都会共享该字段。
    静态方法是使用公共内存空间的,就是说所有对象都可以直接引用,不需要创建对象再使用该方法。
class Test{
    public static int z(int xx,int yy){
        return xx+yy;
    }
 
    public int zz(int xx,int yy){
        return xx+yy;
    }
}

public class mainClass{
    int sum;
    public static void main(String args[]){
 
        sum=Test.z(1,2); //直接用 类.方法或者属性就可以使用该方法或属性。
        System.out.print(sum);
 
        Test t=new Test();
        sum=t.zz(1,2); //因为zz不是静态方法,只能只能用Test类创建一个t对象,然后调用该对象的方法。
        System.out.print(sum);
    }
}

因为interface是一个纯抽象类,所以它不能定义实例字段。但是,interface是可以有静态字段的,并且静态字段必须为final类型。

public interface Person {
    public static final int MALE = 1;
    public static final int FEMALE = 2;
}
  • protected
    protected作用于继承关系。定义为protected的字段和方法可以被子类访问,以及子类的子类。
  • classpathjar
    JVM通过环境变量classpath决定搜索class的路径和顺序;
    jar包相当于目录,可以包含很多.class文件,方便下载和使用;
    jar只是用于存放class的容器,它并不关心class之间的依赖。
    JAVA中的变量和常量

相关文章

  • java SE目录

    java SE目录 java基础(一)java基础(二)关键字面向对象(一)面向对象(二)面向对象(三)集合(一)...

  • Java基础03面向对象

    Java 基础02Java编程基础 面向对象上 面向对象的概述 面向对象的概述:面向对象是一种符号人类思维习惯的编...

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

  • java基础回顾(2)

    面向对象:是基于面向过程的一种思想。 面向过程:以函数为基础,关注实现过程。 面向对象:以对象为基础,关注实现结果...

  • 面向对象

    title:面向对象tags: 基础,Java 面向对象 面向对象程序设计简介 面向对象的基本思想是使用类、对象、...

  • "类"的讲稿

    -----------------------面向对象基础----------------------------...

  • Java 工程师成神之路 | 2019正式版

    摘要:什么是面向对象 基础篇 01面向对象 → 什么是面向对象 面向对象、面向过程 面向对象的三大基本特征和五大基...

  • 2、面向对象

    一、面向对象 定义:面向对象是基于面向过程的。 面向对象与面向过程比较:面向过程:面向过程是以函数为基础,完成各种...

  • 基础6-面向对象

    基础6-面向对象 ###06.01_面向对象(面向对象思想概述)(了解) * A:面向过程思想概述 *第一步 ...

  • 面向对象

    面向对象基础 目标 理解面向对象 类和对象 添加和获取对象属性 魔法方法 一. 理解面向对象 面向对象是一种抽象化...

网友评论

      本文标题:面向对象基础

      本文链接:https://www.haomeiwen.com/subject/wphznctx.html