面向对象
来源:互联网 发布:缉毒知乎 编辑:程序博客网 时间:2024/06/11 02:05
面向对象是基于面向过程的,是一种编程思想。
面向过程:强调的是功能行为
面向对象:将功能封装进对象,强调具备功能的对象
面向对象将:执行者转换成指挥者
static:修饰符,用于修饰成员(成员变量和成员函数)。
当被静态修饰后,就多了一种调用方式,即:类名.静态
静态的使用:工具类(Tool),定义一个类,类中是静态的公共方法(在不需要操作类中特有属性的前提下,可以通过类名直接调用,因为不创建对象,无法访问类中特有的属性)
特点:
1、随着类的加载而加载,随着类的消失而消失,也就是生命周期最长。
2、优先于对象存在。静态先存在,对象后存在
3、被所有对象所共享
4、可以直接被类名调用
5、静态方法只能访问静态成员(方法和变量)【非静态方法可以访问静态方法】
6、静态方法中不可以定义this,super关键字
因为静态优先于对象存在,this存在于对象中,没对象,不可以访问
成员变量(实例变量):随着对象的建立而建立,存在与堆内存中,
静态成员变量(类变量):随着类的加载而加载,存在于方法区中,生命周期最长
/*匿名对象:是没有名字的对象。应用场景:A:当对对象方法仅进行一次调用的时B:匿名对象可以作为实际参数进行传递*/class Student{ public void show() { System.out.println("student -- show"); }}class Test{ //引用类型作为形式参数 public void print(Student s) { s.show(); } public void print(int a) { System.out.println(a); }}class NiMingTest { public static void main(String[] args) { //如何使用show()方法呢? Student s = new Student(); s.show(); //匿名对象的使用 new Student().show(); Test t = new Test(); //Student s2 = new Student(); //t.print(s2); t.print(new Student()); }}
1,静态代码块:用于给类进行初始化。随着类的加载而执行,且只执行一次,优先于主函数执行(只要用到类(构造函数),类就会加载,静态代码块就会执行)
2,构造代码块:用于给所有对象初始化,对象一建立就运行,并优先于构造函数运行
(构造代码块中是所有对象共性的内容)
3,构造函数:与类名同名,用于给对象初始化(当类中定义了构造函数后,默认的构造函数就没有了。不用定义返回值类型,不用写return语句)
面向对象有三大特征:封装、继承和多态
封装是继承的前提,继承是多态的前提
class SubDemo extends Demo{} //okclass SubDemo extends Demo1,Demo2...//error
class A{}class B extends A{}class C extends B{}
class Fu //定义父类{int num = 4;public void setNum(int num){this.num =num;}public int getNum(){return this.num;}}//子类继承父类class Zi extends Fu<span style="white-space:pre"></span>{int num = super.num;//访问父类中的成员变量void show(){System.out.println("num="num);}}class ExtendsDemo{public static void main(String[] args) {Zi z = new Zi();//创建子类对象z.show();}}执行结果
class Fu //创建父类{void show()//父类中的show方法{System.out.println("fu show");}}//子类继承父类class Zi extends Fu{//子类复写父类中的show方法void show(){System.out.println("zi show");}}class ExtendsDemo{public static void main(String[] args) {Zi z = new Zi();z.show();}}执行结果:
class Fu //创建父类{int num;//父类中的成员变量Fu()//父类构造方法{num = 60;//在对象初始化时,给变量赋值System.out.println("fu run,,"+num);}Fu(int x) //父类带参的构造方法{this();//this语句,访问父类中空参的构造方法System.out.println("fu.."+x);}}class Zi extends Fu<span style="white-space:pre"></span>//子类继承父类{Zi()<span style="white-space:pre"></span>//子类空参的构造函数{super(4);//方法父类中带参的构造方法System.out.println("zi run");}Zi(int x)<span style="white-space:pre"></span>//子类带参的构造函数{this();//访问子类中空参的构造函数System.out.println("zi....."+x);}}class ExtendsDemo{public static void main(String[] args) {Zi z = new Zi(10);//创建子类对象,并传递参数System.out.println(z.num);}}执行结果:
接口中的成员都是固定的:public
成员变量:publicstatic final 是一个常量
成员函数:publicabstract 是一个抽象方法
接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。一个类在继承一个类的同时还能去实现接口
类与接口的体现:
类与接口之间是实现关系,而且类可以基层一个类的同时实现多个接口
接口与接口之间是继承关系
代码体现:
abstract class Student<span style="white-space:pre"></span>//定义一个抽象类{abstract void study();<span style="white-space:pre"></span>//study抽象方法void sleep()<span style="white-space:pre"></span>//sleep方法{System.out.println("sleep");}}interface Running<span style="white-space:pre"></span>//定义一个接口{void run();<span style="white-space:pre"></span>//接口中的方法}class Lisi extends Student implements Running//继承和实现接口{void study()<span style="white-space:pre"></span>//复写父类中的study方法{System.out.println("study");}public void run()<span style="white-space:pre"></span>//复写Running接口中的run方法{System.out.println("run");};}class InterfaceDemo{public static void main(String[] args){Lisi ls = new Lisi();ls.sleep();ls.study();ls.run();}}执行结果:
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 刻录光盘
- eclipse怎样自动排版
- 在ASP.NET 4.0 Web form上使用Routing优化URL
- 课程笔记 04 :数据结构(清华) 向量-查找算法
- 股票学习06(分时均价线)
- 面向对象
- maven 多项目管理
- 关于Android SDK Manager无法更新的解决办法
- 赠师弟师妹之考研参照
- 查看sql语句执行时间/测试sql语句性能
- Redis数据类型--key
- Nginx_handler模块发开(hello模块结构解析)
- Network:UDP广播消息的测试
- 简易版qq-----