1.继承
从父类继承属性得到子类,让软件有了延续性,是封装程序中可变因素的重要手段.
2.封装
1.把数据和操作数据的方法封装起来(安全性更高),对数据的访问只提供接口,
2.面向对象本质:将现实世界描绘成完全自治,封闭的对象
3.我们在类中写方法就是对实现细节的一种封装,编写类就是对数据和数据操作的封装
结论:封装一切可以封装的东西,只对外提供最简单的接口
3.多态
1.不同的子类对象对同一个消息做出不同的响应,而同样的对象(分类)调用同样的方法,能够做不同的事情:爸爸喊一声,开始工作:打儿子就开拖拉机耕地,二儿子开飞机撒农药.
2.多态性的分类:
1.编译时(前绑定)
方法重载(overload)
2.运行时(后绑定),是面向对象的精髓
方法重写(override)
A访问B提供的服务,B有多钟提供服务的方式,对A是透明的.
3.实现多态要做的两件事:
1.方法重写,覆盖
2.对象的造型
父类引用指向子类对象,同样的引用调用同样的方法就会根据子类对象的不同表现出不同的行为
4.抽象
1.是将一类对象的共同特征而而总结出来的构造类,包括:数据抽象,行为抽象.
2.抽象只关注属性和行为,不关注行为细节(无方法体)
public class demo1 {
public static void main(String[] args) {
//异常机制有一个原则:如果catch里面有return或者诸如break等让函数终止的,而且finally里面也有return,那么必须 先执行fianlly里面的代码块后才确认
System.out.println(getResult2());//-2
Fu fu=new Zi();
System.out.println(fu.num);//5 成员变量不可能被复写 编译运行都看父类
fu.method_static();//静态方法 是先于对象建立之前就存在了,无法被后出现的Zi类对象所复写的,所以没发生复写 静态方法编译运行都看父类
fu.method();//非静态方法:编译看Fu,运行看Zi
}
public static int getResult2() {
int num = 0;
try {
int i = 2 / 0;
num = 1;
return num--;
} catch (Exception e) {
return num+1; //已经返回了1
}
finally {
return num-2; //然后再变:1-2 = -1;但上面已经返回了1;
}
}
static class Fu{
int num=5;
static void method_static() {
System.out.println("fu static");
}
void method() {
System.out.println("fu method");
}
}
static class Zi extends Fu{
int num=8;
static void method_static() {
System.out.println("zi static");
}
void method() {
System.out.println("zi method");
}
}
}
原文链接http://www.zhimengzhe.com/Androidkaifa/74866.html