知识点:面向对象
一、概述
面向对象与面向过程都是我们编程中,编写程序的一种思维方式
1.面向过程:从无到有所有的操作都的自己完成.
面向过程的程序设计举个例子:遇到一件事情,思考“我们应该怎么打扫卫生”,然后通过“扫地,拖地,倒垃圾等一些列方式一步一步来解决打扫卫生这个问题”。
面向过程开发:面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后通过这些功能和方法来完成需求。
2.面向对象:以对象为基准,任何属性和行为都是基于对象的,所有的事情都是通过对象来完成.
面向对象的程序设计举个例子:遇到一件事情,比如“我们应该怎么打扫卫生”,首先思考“我该让谁来做”,比如让“小李”来扫地,“小王”来拖地,“小张”倒垃圾,而这"小李",“小王”,“小张”就是对象,
他们要怎么具体的做这件事不用我们管,我们只关心 他们(“小李”,“小王”,“小张” 就是一个个对象)合力把这件事做好。
二、类与实例
类使用class修饰
类:具备共同的属性和行为的事物.(注意:类是没有标准答案的)
属性:变量.
行为:方法.

对象(实例):从类中抽取出来实实在在存在的个体,并且个体就叫做对象,并且对象是类中定义的属性和行为的可执行者.
获取对象:使用关键字 new
类名 对象名(自定义符合小驼峰) = new 类型();

三,局部变量和成员变量
A.定义位置区别:
1.成员变量在方法之外,类之内的
2.局部变量方法之内
B.作用上的区别:
1.成员变量作用是描述一类公共属性的;
2.局部变量的作用是提供一个变量给方法内部使用
C.生命周期的区别:
1.随着对象的创建而存在,随着对象的消失而消失
2.局部变量在调用对应的方法是执行到创建该变量的语句时,局部变量一旦出了自己的作用域,那么马上从内存中消失
D.初始值
1.成员变量有默认初始值.
2.局部变量没有默认初始值,必须先赋初始值才能使用.
建立一个类TestDemo
public class TestDemo {
String name = "成员变量"; //成员变量在方法之外,类之内的
public static void main(String[] args) {
new TestDemo ().show();
}
public void show() {
String name = "局部变量"; //局部变量方法之内
System.out.println(name);
}
}
四,JAVA面向对象三大特性
java的三大特性:
1,封装
2,继承
3 ,多态
1.封装: 将不想向外 公布的细节隐藏, 只向外提供公共的使用接口.(隐藏具体的代码,只公布一个方法名作为接口)
(java里面最小的封装单元是方法)
作用:保护细节不被破坏.
访问修饰符 :可以修饰类,可以修饰成员函数,可以修饰成员变量
default:当定义的时候,什么都不写,就表示默认的
public:任何地方都能够调用或者使用的代码
protected:子类访问权限:本类内部可以访问,不同包的子类也可以访问,同包其他类也可以访问,能继承到子类;
private:只能在本类中使用
注意:类的访问修饰符,只能使用默认或者public
成员方法和成员属性四个访问修饰符都能使用
2.继承
什么是继承?
继承:子类继承父类的所有公有的属性和行为.

下面我们来看一个例子:我们来创建以一个动物类,表示动物这个物种。
public class Animal {
//动物的体重
private int weight;
public int getWeight() {
return weight;
}
//设置体重的方法
public void setWeight(int weight) {
this.weight = weight;
}
}
接着我们来创建一个子类Dog类,继承Animal这个类,Dog类也拥有了父类Animal的属性和方法。
我们在Dog类里增加一个用于描述狗叫的方法。
public class Dog extends Animal {
//Bark为狗叫的方法
public void Bark(){
System.out.println("汪~~~~~~汪~~~");
}
//最后我们来测试Dog是否真的拥有了父类Animal的一些方法和属性呢?
public static void main(String[] args) {
Dog myDog=new Dog();
//狗狗设置体重为200
myDog.setWeight(200);
//输出
System.out.println("狗狗的体重是"+myDog.getWeight()+“===”);
//加一个狗狗子类自己方法
myDog.Bark();
}
}
输出结果是:狗狗的体重是200===汪~~~~汪~
说明子类Dog完美的继承了父类Animal的属性和方法。
什么时候会用到继承?
当多个类当中出现了相同的属性和行为,则将相同的部分向上抽取,抽取成父类,子类只用继承即可.(final是不能被继承的)
继承的方法:
使用关键字 extends 这个关键字是在子类上面用的,写在子类的类名后面,在extends关键字后面跟父类的类名.
①子类一旦继承了父类,则可以调用父类的所有非私有的属性和行为.(一个父类下,所有的子类权限一致)
②一直强调,子类只能够调用父类的非私有属性和行为.
③一定要记得,不能什么属性和行为都往父类进行抽取.
④一定是所有类中的所有公用的属性和行为才用来继承
额外:super关键字
在子类的每一个构造函数里面的第一行是加上了super关键字的

3.多态
什么是多态?
一个事物具备多种形态,比如学生,学生是人的一种,则 一个具体的同学“学生张三” 既是 学生 也是 人,即出现两种形态。
多态的前提:
①要有继承或者实现
②还有方法的重写
③父类引用指向子类对象




如果传过来的是 student对象
则输出:学生 吃饭 睡觉 做梦 的方法
如果传过来的是 teacher对象
则输出:老师 吃饭 睡觉 做梦 的方法
补充:向上转型和向下转型
向上转型
Person student = new Student()
用父类的声明 创建一个子类的对象,将子类的范围扩大,但是向上转型,不能执行子类特有的方法.
所以需要 向下转型
将一个对象的父类声明再转回子类声明.需要强制转换

题外话:
一个方法名,参数不同,这叫方法重载。(Overload)
void foo(String str);
void foo(int number);
父类与子类有同样的方法名和参数,这叫重写。(Override)
class Parent {
void foo() {
System.out.println("Parent foo()");
}
}
class Child extends Parent {
void foo() {
System.out.println("Child foo()");
}
}
总结:
1,面向对象是把一组数据结构和处理他们的方法组成对象。
2,把具有相同行为的对象归纳成类。
3,通过封装隐藏类的内部细节。
4,通过继承使类得到泛化。
5,通过多态实现基于对象类型的动态分派。
1141

被折叠的 条评论
为什么被折叠?



