---恢复内容开始---
面向对象的基本思想是,从现实世界中客观存在的事物出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式。
面向对象更加强调运用人类在日常德思维逻辑中经常采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
对象用计算机语言对问题域中事物的描述,对象通过“属性(attribute)”和“方法(method)”来分别对应事物所具有的静态属性和动态属性。
Java与面向对象
对象是java的程序的核心,在java程序中“万事万物皆对象”。
对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体。
类是用来创建同一类型的对象的“模板”,在一个类中定义了该类对象所具有的成员变量以及方法
为什么用对象:
Java类的定义
变量一般定义:声明---->赋值
成员变量
- 成员变量可以是Java语言中任何一种数据类型(包括基本类型和引用类型)
- 在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
- 成员变量的作用范围为整个类体
局部变量:
- 局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
- 局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
- 局部变量没有默认初始化值
class Person{ //成员变量定义 private int id;//因为是成员变量,所以默认初始化 private int age = 20; //方法定义 public int getAge() {return age;} public void setAge(int i){age = i;} public int getId() {return id;} }
对象的创建和使用
构造方法
- 使用new +构造方法创建一个新对象。
- 构造函数是定义在Java类中的一个用来初始化对象的函数
- 构造方法与类同名没有返回值
public class void Person { int id; int age; Person(int n,int i){ id = n; age = i; } }
this关键字
在类的方法中定义中使用的this关键字代表使用该方法的对象的引用
当必须指出当前使用方法的对象是谁时要使用this
有时使用this可以处理方法中成员变量和参数重名的情况
this可以看作是一个变量,它的值是当前对象的引用
public class Leaf { int i = 0; Leaf (int i) { this.i = i ; } Leaf increament(){ //返回值为 leaf类型this(对象) i++; return this; } .... }
static关键字
- 在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,第一次使用时被初始化。对于该类所有对象来说,static成员变量只有一份。
- 用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
静态的方法不再是针对于某个对象调用,所以不能访问非静态成员。
- 可以通过对象引用或类名(不需要实例化)访问静态成员。
public class Cat { private static int sid = 0;//static private String name; int id; Cat(String name) { this.name = name; id = sid++; } public void info(){ System.out.println ("My name is "+name+" No."+id); } public static void main(String arg[]){ Cat.sid = 100; Cat mimi = new Cat("mimi"); mimi.sid = 2000; Cat pipi = new Cat("pipi"); mimi.info(); pipi.info(); } }
super关键字----引用基类的成分
class FatherClass{ public int value; public void f(){ value = 100; System.out.println("Fater's value="+value); } } class ChildClass extends FatherClass{ public int value; public void f(){ super.f(); value = 200; System.out.println("child's value="+value); System.out.println(value); System.out.println("Fater's value="+super.value); } } public class SuperTest { public static void main(String[] args){ ChildClass cc = new ChildClass(); cc.f(); } }
动态绑定和多态
动态绑定是指“在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际类型调用其相应的方法”
多态的存在有三个必要条件:
1、要有继承
2、要有重写
3、父类引用指向子类对象。
---恢复内容结束---