黑马程序员-----java面向对象

------- 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("我力气大,我搬山救爷爷.....");
	}	
	
}

总结:

面向对象是一种思想,一开始理解会有点困难,不过慢慢就好了,后面的接口和多态都是以后程序开发中常用的,需要加强练习,对任何一种事物都能剖析出其中的成员方法和成员变量,达到万物皆对象的地步,对以后学习大有帮助






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值