
一.static
1.它是一种修饰符
2.使用位置:它用来修饰成员变量和成员方法
static修饰成员变量,叫类变量;
static修饰成员方法,叫类方法;
类成员=类变量+类方法
没有使用static修饰成员变量,叫实例变量;
没有使用static修饰成员方法,叫实例方法;
实例成员=实例变量+实例方法
3.类变量和实例变量的区别
实例变量是每个对象独有的属性;类变量是所有对象共享的属性。
实例变量只能被对象访问;类变量可以被类直接访问,也可以被对象访问。
4.类方法和实例方法的区别
实例方法是每个对象独有的方法;类方法是所有对象共享的方法。
实例方法只能被对象访问;类方法可以被类直接访问,也可以被对象访问。
类方法中只能直接访问类变量和类方法;实例方法中可以访问所有成员。
类方法中不能使用this。
5.代码块
代码块会在创建该类对象的时候先执行,首先执行静态代码块(只执行一次),再执行非静态代码块(每次创建对象都执行),再执行构造器,最后执行调用的属性和方法。
二.访问修饰符
1.修饰类
public--该类是公共类,可以被任何其他类访问
缺省(default)--只能被同包下的类访问
2.修饰成员
public:它是公共成员,可以被所有类访问
protected:在本类内部访问,同包下的其他类访问,在不同包下的子类中访问(通过继承来访问)
缺省:在本类内部访问,同包下的其他类访问
private:只能在本类内部访问
三.面向对象的特点(oop)
1.封装
2.继承
3.多态
封装
1.目的:保护成员,将成员包裹起来,不让外部其他类直接访问
2.分类:
属性封装--private
方法封装--private
构造器封装--private
3.编码习惯
在企业中,一般体现属性的封装,其他根据需要可选。
属性封装:
属性设为private,提供公有的setXXX(..)和getXXX()方法来间接访问。
继承
1.概念:父类派生出一个新的子类,让子类拥有父类的非私有的属性和方法。
2.目的:取消子类中重复代码的定义。
3.语法:
【修饰符】 class 子类类名 extends 父类类名{
子类继承的成员:子类中无需定义和父类重复的成员,通过继承就可获得这些成员。
子类扩展的成员
}
4.单继承
一个类最多只有一个父类
5.注意事项
子类只能继承父类的成员变量和成员方法,不能继承父类的构造器。
6.继承的成员
同包下,子类可以继承父类非私有的成员。
不同包下,子类可以继承公有的和受保护的成员。
7.方法的重写(override)
在子类中,对继承的父类方法进行重新定义的现象。
重写原则:
方法名相同
参数列表相同
返回值类型相同
访问修饰符>=父类的
抛出的异常必须>=父类异常
8.继承的原理
new 子类构造器([参数列表]);
执行过程:
系统会选构造一个父对象,然后再构造子对象,将父对象和子对象联系在一起。
说明:子类继承父类,体现在一个子对象有且仅有一个父对象。
9.super关键字
在子类构造器中,调用父类构造器。
super([参数列表]);
注意:该语句是子类构造器中第一条语句;
当前对象的父对象
我们可以使用super来访问父对象的成员。
super.属性名
super.方法名([参数列表]);
多态
1.概念:同一事物的多种形态。
2.分类:
方法的多态--方法的重写、方法的重载
变量的多态--使用父类声明一个变量,该变量中可以存储所有父类对象以及所有子类对象
3.向上转型
父类类名 对象名=new 子类构造器([参数列表]);
说明:子类对象会自动由子类类型向上提升为父类类型。
4.向下转型
父类对象转化成子类对象
子类类名 对象名=new 父类构造器//会出现java.lang.ClassCastException(类型转化异常)
例如:HourlyEmployee he = (HourlyEmployee) new Employee("李四", 3000);
除非:先向上转型,才能向下转型
例如:Employee e=new HourlyEmployee("张三", 5, 3000,12);
HourlyEmployee he = (HourlyEmployee)e;