Java面向对象基础

面向对象

  1. 把具有共同特点和行为的东西封装成一个个对象。
  2. 实例化类(创建对象),使用对象的属性或方法。
  3. 对象存储在JVM的堆内存中,对象的标识符(引用值存储在栈内存)存储了对象在堆内存中的地址。

类的基本结构

//class的权限修饰符只可以用public和default
public class ClassName{
    //成员变量
    private String propertyName;
    //构造方法
    public ClassName(){}
    //成员方法
    public void method(){}
}

权限修饰符

  • private:仅限本类内部访问。
  • default:仅限本包内访问。
  • protect: 仅限本包和该类的子类访问。
  • public:所有类。

包和导包

  • package:文件夹,包。
    package语句必须写在程序的开头,注释除外。
    package语句中的类的class文件必须在package语句中的包。
  • import:不同包下的类之间的访问。
    一个类要用到其他类的时候,先在类所在的包中看看有没有要用到的类或者看看import该类,如果没有,再去classpath中的目录寻找,没有则报错。
    import和package语句中的类都是指java文件编译成的class文件,而不是java文件。

匿名对象

就是没有名字的对象。

内部类

  • 成员内部类(成员位置)
  • 局部内部类(局部位置)
  • 匿名内部类

this和super

  • this:代表所在类的对象引用。
  • super:代表所在类父类对象的引用。
  • this()可以调用本类的构造方法,super()可以调用其父类的构造方法,super()如果调用父类的构造方法,必须要在子类构造方法的第一行。
    如果子类的构造方法中没有显示地调用父类的构造方法,则系统默认地调用其父类的无参构造方法,如果父类又没有无参的构造方法,则编译出错。

构造方法

给对象的数据进行初始化。

static

static修饰的东西都属于本类(所有对象共享)

final

  • final的变量(包括成员变量、局部变量)不能被改变。
  • final的方法不能被重写。
  • final的类不能被继承。

继承

  • 子类并不只是继承了父类的非私有成员,而是继承了所有的成员,但是只有public和protected的父类成员能在子类中调用。即子类拥有父类所有成员的所有权,但是只拥有public和protected的成员使用权。
  • 子类对象在调用自己的构造方法的时候,必须先调用其父类的构造方法。

多态(动态绑定)

在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际类型调用其相应的方法。
前提:
1. 有继承关系;
2. 有方法重写;
3. 有父类引用指向子类对象。

成员访问特点:Student类继承Person类,Person p=new Student();

  • 成员变量(两个类都具有的相同的成员变量):编译看左边,运行看左边。
  • 成员方法(两个类都具有的相同的成员方法):编译看左边,运行看右边。
  • 静态方法:编译看左边,运行看左边

对象转型(casting)

一个父类的引用类型变量可以指向其子类的对象。
一个父类的引用不能访问其子类新增加的成员。

  • 向下转型(downcasting):
    从父到子,父类引用转为子类对象。

  • 向上转型(upcasting):
    从子到父,父类引用指向子类对象(多态)。

instanceof:对象 instanceof 引用类型 ,判断对象是否为该引用类型或者为该类的子类。

抽象(abstract)

  • 抽象类必须被继承,抽象类不能实例化。
  • 抽象方法只有声明,没有方法体(不用实现),必须要被子类重写,如果子类中不重写,则把该子类也定义为抽象类。
    • 类中含有抽象方法,则该类为抽象类。

接口(interface)

  • 接口可以多重实现,接口之间可以相互继承。
  • 接口不能实例化,没有对象。
  • 接口是抽象方法和常量值得定义的集合。
  • 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量(默认为用static、public和final修饰)和方法(默认修饰符为public)的定义,而没有变量和方法的实现。
  • 多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。
  • 与继承关系类似,接口与实现类之间存在多态性,如果一个类中实现了两个接口,这两个接口存在一个同名的抽象方法,编译会报错。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值