黑马程序员--Java基础--03面向对象(1)

----------- android培训java培训java学习型技术博客、期待与您交流! ------------

1.面向对象概念:

面向对象是一种对现实世界理解和抽象的方法,在此基础上看来一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。

面向对象是基于面向过程而言的,将功能封装进对象,强调了具备功能的对象,可以使我们从执行者变为指挥者,例如应聘过程,相对于招聘者来看我就是具有编程功能的对象,我自身封装了编程的方法。

 

开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。

设计的过程:其实就是在管理和维护对象之间的关系。

面向对象的特征:

封装(encapsulation)

继承(inheritance)

多态(polymorphism)

 

2.类与对象的关系

类:是对现实世界事物的描述。

对象:就是现实事物实实在在的个体。

Java对对象共性的描述是用类体现出来的,描述事物就是描述事物的属性及行为

 

成员变量及局部变量

作用范围。

成员变量作用于整个类中。

局部变量变量作用于函数中,或者语句中。

在内存中的位置:

成员变量:在堆内存中,因为对象的存在,才在内存中存在。

局部变量:存在栈内存中。

class Person     //人的抽象描述生成人这个类
{
	String name; //姓名(成员变量)
	int age;     //年龄
	Person(String name){
		this.name = name;
	}
    void eat(){
		int i = 5; //局部变量
		System.out.println("我要吃"+i+"两饭");
	}
}
class Test
{
	public static void main(String[] args){
		//根据人这个类生成具体人,即对象
		Person p1 = new Person("张三");  
		Person p2 = new Person("李四");
		p1.eat();
		p2.eat();
	}
}

3.面向对象的特点

(1)封装

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

封装的格式为:修改属性的可见性,设置set/get方法,设置属性的存取限制。

private int age;   //私有化年龄属性
public int getAge(){  //读取方法
	return age;
}

public void setAge(int age){
	//年龄的有效验证
	if(age<0||age>200){
		System.out.println("年龄不合法。。");
		return;
	}
	this.age = age;
}

好处:

将变化隔离。

便于使用。

提高重用性。

提高安全性。

封装原则:

将不需要对外提供的内容都隐藏起来。

把属性都隐藏,提供公共方法对其访问。

注:私有仅仅是封装的一种表现形式。


(2)继承

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可。子类可以直接访问父类中的非私有的属性和行为。

通过extends 关键字让类与类之间产生继承关系。

通过 extends 关键字让类与类之间产生继承关系。

class Person     //父类,抽取出子类老师学生类的共性加以描述
{
	String name; //姓名
	int age;     //年龄
	Person(String name){
		this.name = name;
	}
    void eat(){
		System.out.println("我要吃");
	}
}

class Student extends Person
{
	int sid  //学生独有的属性,学号
	//学生独有的方法,学习
	void study(){
		System.out.println("我要学习");
	}
}

class Teacher extends Person
{
	int tid  //学生独有的属性,教师号
	//学生独有的方法,讲课
	void teach(){
		System.out.println("我要讲课");
	}
}

继承的特点

Java只支持单继承,不支持多继承。

Java支持多层继承关系。

Class Fu{}

Class Zi extends Fu{}

Class Sun extends Zi{}

定义继承需要注意:

不要仅为了获取其他类中某个功能而去继承

类与类之间要有所属(" is a " )关系,xx1是xx2的一种。

 

Super及this关键字

Super的使用和this的使用基本相同,只是表示的对象层次不同。

This表示所在函数对象的引用。

Super表示父类对象的引用。

class Fu
{
	int i;
}
class Zi extends Fu
{
	int i;
	//第一个i为子类的i,第二个i为父类的i
	System.out.println(this.i+" "+super.i);
}


方法重写

当子类中出现与父类各项参数相同的方法时,调用方法时将运行子类的方法,这就是方法的重写。

class Fu
{
	void say(){
		System.out.println("我是父亲。。");
	}
}
class Zi extends Fu
{
	//子类覆盖了父类的say方法
	void say(){
		System.out.println("我是儿子。。");
	}
}

注:子类方法的权限必须大于或等于父类方法的权限,静态只能覆盖静态。



----------- android培训java培训java学习型技术博客、期待与您交流! ------------


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值