------- android培训、java培训、期待与您交流! ----------
1.面向对象思想:
基于面向过程的思想,找一个对象来解决问题,对象包含了解决问题的步骤.
基本步骤:
定义类--> 创建对象-->调用方法
2.特点:
1)是一种更符合我们思想习惯的思想;
2)可以将复杂事情简单化;
3)从执行者变成指挥者;
4)角色发生了转变。
3.面向对象思想三大特征:封装,继承,多态。
4.类和对象
定义类的步骤
分析:
类 {
属性
行为
}
|
|
class 类{
成员变量
成员方法
}
使用对象的步骤
测试类中,创建对象
数据类型 对象名 = new 数据类型();
5.封装的步骤
1.使用private隐藏成员变量
2.提供公共的访问方式,也就是对应的get /set 方法 ,对成员变量进行取值/赋值的操作
6.完整的类
目前包括两个部分 ,成员变量和成员方法,
成员方法又分为两个部分--get/set 和 特有方法
格式如下:
class 类名 {
成员变量
成员方法
get /set
特有方法,比如吃饭,学习,介绍等
eat(){}
show(){}
}
7.代码块 :
局部代码块:在方法中出现,限定变量生命周期,及早释放,提高内存利用率
构造代码块:成员位置,每次构造方法调用前
静态代码块:成员位置,加static{},加载类时.只执行一次.
8.继承:
多个类中存在相同属性,行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
格式 :
class Zi extends Fu{
}
特点: 单继承 : 一个子类只能继承一个父类
多层继承:子类还可以有子类, 父类也可以有父类
继承的好处
1.提高代码复用性
2.提高代码维护性
3.让类与类发生了关系,是多态的前提
弊端
耦合性增强,违背了我们的开发原则
高内聚,低耦合
子类只能继承父类所有非私有成员(成员方法和成员变量)
子类不能继承父类的构造方法,但是可以通过super关键字去访问父类的构造方法
9.多态:
一种事物的多种形态
多态的前提条件 :
1.满足继承关系或者实现
2.方法重写
3.父类引用指向子类对象 Fn f=new Zi()
成员变量:编译看左边,运行看左边
成员方法:编译看左边,运行看右边
构造方法:编译看左边,运行看左边
静态方法:编译看左边,运行看左边
多态的好处:提高了代码的维护性(继承保证);提高了代码的扩展性(多态保证)
多态的弊端:不能使用子类特有的功能(子类有,而父类没有的方法)
不过可以向下转型(强制转换)格式:子类类型 变量名 =(子类类型)父类变量名
10.抽象类
抽象类:描述不清楚的类
关键字 : abstract 抽象
格式: abstract class 类名{}
抽象类的特点:
1.抽象类中可以非抽象的方法,但是如果有抽象方法,此类必然是抽象类
2.虽然抽象类不能new,但是可以有构造方法.作用:给子类实例化用的
3.子类的特点:
1.要么是抽象类
2.要么必须重写所有的抽象方法.
成员的特点:
A:抽象类的成员特点
a:成员变量:既可以是变量,也可以是常量。
b:构造方法:有。
用于子类访问父类数据的初始化。
c:成员方法:既可以是抽象的,也可以是非抽象的。
11.接口
接口的本质:一种规则
如果你定义接口,就是在定义一种规则.
接口作用:
使用(实现)接口,就是扩展了功能.
接口的特点:
1.接口中的方法,必须是抽象
2.接口的实现类,必须重写接口中所有的抽象方法.
(其实接口的实现类,也叫接口子类)
12.static
特点:随着类的加载而加载;优先于对象存在;被类的所有对象共享
注意事项:
在静态方法中是没有this关键字的
静态方法只能访问静态的成员变量和静态成员方法
13.内部类
定义在类中的类
成员位置: 类中方法外
·局部位置: 方法内部
在成员位置内部类,叫成员内部类
在局部位置内部类,叫局部内部类
局部内部类:
定义在方法内部
使用: 在方法内,创建内部类对象 ·
匿名内部类:
前提:存在一个类或者是接口
格式:
new 接口名(){
重写接口中所有方法;
}
14.代码
/*
老大是大力士,
老二是顺风耳千里眼,
老三金刚不坏之身,
老四会喷火,
老五会喷水,
老六会隐身,
老七的宝葫芦可以吸进万物。
定义葫芦娃
abstract class HuLuWa {
int num;
String color;
HuLuWa (){}
HuLuWa(String color ,int num){
this.color = color ;
this.num = num;
}
//get /set
public abstract void saveGrandpa() //每个娃救爷爷的方式是不一样的,我们描述不清
}
interface SuperPower{
//大力士功能
dalishi();
//千里眼 顺风耳
qianliyanShunfenger();
}
class DaWa extends HuLuWa implements SuperPower{
DaWa (){}
DaWa(String color ,int num){
this.color = color ;
this.num = num;
}
实现抽象方法
public void saveGrandpa(){
syso("我是 +name+"爷爷我来了");
}
//重写dalishi()
public void dalishi(){
syso("我力气大,我搬山救爷爷.....")
}
qianliyanShunfenger(){
}
}
class ErWa extends HuLuWa implements SuperPower{
ErWa (){}
ErWa(String color ,int num){
this.color = color ;
this.num = num;
}
实现抽象方法
public void saveGrandpa(){
syso("我是 +name+"爷爷我来了");
}
//大力士功能
dalishi(){}
//千里眼 顺风耳
qianliyanShunfenger(){
syso("我打听打听 , 救爷爷.....");
}
}
一个接口
一个抽象类
两个普通类
*/
class HuLuWaTest{
public static void main(String[] args){
DaWa dw = new DaWa("大娃","红色",1);
dw.saveGrandpa();
dw.dalishi();
// dw.qianliyanShunfenger();
}
}
//定义接口
interface SuperPower{
// 一共是 七个超能力
// 大力士
public abstract void dalishi();
// 千里眼 顺风耳
public abstract void qianliyanShunfenger();
}
//定义抽象类
abstract class HuLuWa{
//自己加 name
String name;
int num;
String color;
HuLuWa (){}
HuLuWa(String name, String color ,int num){
this.name = name ;
this.color = color ;
this.num = num;
}
//get /set
public String getColor(){
return color;
}
public void setColor(String color){
this.color = color;
}
public int getNum(){
return num;
}
public void setNum(int num){
this.num = num;
}
//public abstract void saveGrandpa(); //每个娃救爷爷的方式是不一样的,我们描述不清
public void saveGrandpa(){
System.out.println("我是 "+ name +" , 爷爷我来了");
}
}
//定义普通类
class DaWa extends HuLuWa implements SuperPower{
DaWa (){}
DaWa(String name, String color ,int num){
this.name = name ;
this.color = color ;
this.num = num;
}
// //实现抽象方法
// public void saveGrandpa(){
// syso("我是 "+ name+" , 爷爷我来了");
// }
//重写dalishi()
public void dalishi(){
System.out.println("我力气大,我搬山救爷爷.....");
}
}
总结:
面向对象是一种思想,一开始理解会有点困难,不过慢慢就好了,后面的接口和多态都是以后程序开发中常用的,需要加强练习,对任何一种事物都能剖析出其中的成员方法和成员变量,达到万物皆对象的地步,对以后学习大有帮助