Java基础1
面向过程的程序语言【C】是前期绑定,面向对象【Java】的程序语言是后期绑定,前期绑定是在程序之前绑定,后期绑定是根据程序运行时的对象类型绑定,Java的后期绑定是默认的,不需要添加关键字来完成,除了static和final。
面向对象的三种特征
-
封装
-
继承
-
多态
对象五种特性
-
万物皆对象
-
程序是对象的集合,它们通过发送消息来通知所要做的
-
每个对象都有自己的由其他对象所构成的存储
-
每个对象都有类型 每个对象都是某个类的实例
-
某一特定类型的所有对象都可以接收同样的信息
对象具有状态、行为和标识
-
状态是指对象拥有内部数据
-
行为是指方法
-
标识是指对象在内存里的位置(唯一地址)
类和对象的关系
类像是对象的操作集合,对象通过类实例化,实例化之后可以使用类中的方法(不能是private),一个类的对象可以有任意个,虽然是同一个类的对象,可以调用一样的方法,但是两者是不同的,因为内存地址不同。
【不太严谨的栗子】就像是一个妈生的,虽然都有一样的器官(前提性别一样),但是A是A,B是B。
Java的三种权限
-
private【不能修改】
-
public【导入包可以修改方法和数据】
-
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就有了垃圾回收器的机制,可以自动发现对象还要不要使用了,不需要就会摧毁掉。
浙公网安备 33010602011771号