类和对象
一 面向对象和面向过程1. 什么是面向对象?
我们知道java是一门纯面向对象语言,在面向对象的世界里,一切皆为对象
面向对象是解决问题的一种思想,主要依靠对象之间的交互完成的一件事情,用面向对象的思想来涉及程序更符合人对事物的认知
那面向对象各和面向过程区别又是什么呢?
我简单举个例子来区分面向对象各和面向过程是什么
比如你想吃西红柿炒蛋,怎么办?
有两个选择
1 自己去买材料 ,鸡蛋,西红柿,调料,打鸡蛋,切西红柿,起锅烧油,
2 去饭店,直接点一份西红柿炒蛋,付钱
这样可以看出它们的区别
1 是面向过程
面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。
2 是面向对象
面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。
面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们使用的就是面向对象了。
2. 面向过程和面向对象的区别
面向过程
优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。
缺点:不易维护、不易复用、不易扩展
面向对象
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程差
1 什么是类
首先先简单了解类,类是一个实体(对象)来进行描述的,主要描述该实体(对象)具体哪些属性(外观等),
哪些功能(主要用来干啥),我举个例子
比如:人
在java里可以看成一个类
他的属性指的是:姓名,年龄,性别等等
那功能那就相当是:跳,走,跑,吃饭等等
那在javak中如何对上述定义呢?如下
修饰符 class 类名{
1.成员变量(属性)
2.行为方法
}
具体代码如下:
public class Student {
//成员变量(属性)
public String name;
public int age;
public String gender;
//成员方法
public void Show(){
}
}
class为定义类的关键字,Studay为类的名字,{}中为类的主体
修饰符有:public protected default ptivate
public(公有的)访问权限,可以修饰类,接口,变量,方法;public所修饰的内容,在当前类,同一个包,其他包都可以访问;
protected(受保护的):可以修饰变量,方法,不可修饰外部类;使用该修饰符修饰的类型可以在当前包,类,同一包类的子类中访问;其他包不可以访问;
default(默认):可以修饰类,接口,变量,方法使用该修饰符修饰的类型可以在当前包,类,同一包内的子类中访问;其他包不可以访问
private(私有的):可以修饰变量,方法,不能修饰外部类;使用该修饰符修饰的对象只可以在本类中使用,其他任何地方都不可以使用;
三 对象的创建很简单,就是通过 new 关键字(类名)
比如创建是一个学生类Student那么可以用new个实例化对象
四 成员变量和成员方法的调用Student stu = new Student //创建个实例化对象
重点:成员变量它是依赖于对象,所以 *** 作成员变量,首先要创建对象,
有对象,才能 *** 作属性
注: 当是static修饰的时候就不是依赖对象,而是依赖类
*** 作:引用变量名.成员变量名
举例:一个学生类
//定义一个类
class Studay {
//成员变量
public String name;
public int age;
public String gender;
//成员方法
public void Show(){
System.out.println("name:"+name+"\tage:"+age+"\tgender:"+gender);
}
}
public class TestStuday {
public static void main(String[] args) {
Studay stu = new Studay();//创建一个实例化对象
// 通过引用变量名.成员变量名 来调用成员变量和成员方法
//通过引用变量名.成员变量名初始化
stu.name="小二";
stu.age=30;
stu.gender="男";
stu.Show();
}
}
1. 先有类,才有对象。
2. 类只有一个,对象可以多个。
3. 对象依赖于类。
比如:
//定义一个类
public class Studay {
//成员变量
public String name;
public int age;
public String gender;
//成员方法
public void Show(){
System.out.println("name:"+name+"\tage:"+age+"\tgender:"+gender);
}
public void Show(String name, int age, String gender) {
System.out.println("name:"+name+"\tage:"+age+"\tgender:"+gender);
}
}
public class TestStuday {
public static void main(String[] args) {
Studay stu = new Studay();//创建一个实例化对象
// 通过引用变量名.成员变量名 来调用成员变量和成员方法
//初始化
stu.name="小二";
stu.age=30;
stu.gender="男";
stu.Show();
Studay stu1 = new Studay() ;
stu1.name="老李";
stu1.age=40;
stu1.gender="男";
stu1.Show();
Studay stu2 = new Studay();
stu2.Show("小小",20,"女");//也可以传参初始化
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)