Java基础1

前期绑定和后期绑定

面向过程的程序语言【C】是前期绑定,面向对象【Java】的程序语言是后期绑定,前期绑定是在程序之前绑定,后期绑定是根据程序运行时的对象类型绑定,Java的后期绑定是默认的,不需要添加关键字来完成,除了static和final。

 

面向对象的三种特征

  1. 封装

  2. 继承

  3. 多态

 

对象五种特性

  1. 万物皆对象

  2. 程序是对象的集合,它们通过发送消息来通知所要做的

  3. 每个对象都有自己的由其他对象所构成的存储

  4. 每个对象都有类型 每个对象都是某个类的实例

  5. 某一特定类型的所有对象都可以接收同样的信息

 

对象具有状态、行为和标识

  1. 状态是指对象拥有内部数据

  2. 行为是指方法

  3. 标识是指对象在内存里的位置(唯一地址)

 

类和对象的关系

类像是对象的操作集合,对象通过类实例化,实例化之后可以使用类中的方法(不能是private),一个类的对象可以有任意个,虽然是同一个类的对象,可以调用一样的方法,但是两者是不同的,因为内存地址不同。

【不太严谨的栗子】就像是一个妈生的,虽然都有一样的器官(前提性别一样),但是A是A,B是B。

 

Java的三种权限

  1. private【不能修改】

  2. public【导入包可以修改方法和数据】

  3. protected【同一个包下可以访问】

 

继承

举个栗子,表示某种特定物种的时候,可以利用继承来减少代码量,比如编写一个man类和woman类,会发现两个类中重复的地方比较多,比如性别、年龄, 如果把重复的地方挑出来写成一个human类,接着让man类和woman类去继承就可以减少两个类中的代码量,如果要添加新方法或数据类型只需要去修改human类就行了。

 

human类

public class Human {

   public byte age = 0;
   public String sex = "";
   public String name = "";
   public int salary = 0;
}

 

Woman类

public class WoMan extends Human {

   public static void main(String[]args)
  {
       Human human  = new Human();
       human.age = 20;
       human.name = "test";
       human.sex = "female";

  }
}

 

Man类

public class Man extends Human {

   public static void main(String[]args)
  {
       Human human  = new Human();
       human.age = 25;
       human.name = "test1";
       human.sex = "male";
       human.salary = 100;
  }
}

 

被继承的类称为父类,继承的类是子类,两者之间的关系是is-a,假设两个对象A和B,可以理解成

A是B,表示A继承B,B为父类,A为子类,这里的human就是B类,woman和man是A类。

 

子类不是什么都能继承父类的,只有非private的属性和方法可以,同时子类可以有自己的属性和方法,算是对类的一种扩展,子类也可以重写父类的方法。

 

单根继承结构

单根继承结构是指所有类都有一个共同的父类,这个父类就是Object,所有对象都有一个共用接口,单根继承结构让垃圾回收器更容易实现,并且所有的对象都可以很容易的在堆上创建。

 

对象创建和对象生命期

对象的创建有两种,一种是在堆栈上创建,所以对象的存储空间和生命期可以在写代码的时候就决定,还有一种是在堆(heap)的内存池里面创建对象,等运行的时候才知道对象需要多少内存、具体类型和生命周期,Java使用的是第二种。

 

在堆栈上创建对象的好处是编译器知道对象的生命期,可以自动摧毁它,但是在堆上创建对象,编译器对生命期完全不了解的,所以Java就有了垃圾回收器的机制,可以自动发现对象还要不要使用了,不需要就会摧毁掉。

 

 

posted @ 2019-04-08 09:00  WuCola  阅读(118)  评论(0)    收藏  举报