当前位置:文档之家› 马士兵java基础笔记 pdf版 面向对象部分

马士兵java基础笔记 pdf版 面向对象部分


public class Test{ public static void main(String args[]){ Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000)(1); test.change1(date)(4); test.change2(d1);(7) test.change3(d2);
b.setDay(22),把 b 指向的值改变了,这次真 的变了!
方法执行完后,b 消失,d2 的值变了。
四. 方法重载 类中可以定义相同名字但参数不同的方法。
五. this 关键字 this 指向对象自身的引用。
在类的方法定义中使用 this 关键字代表使用该方法的对象的引用。 当必须指出当前使用方法的对象是谁时要使用 this 有时使用 this 可以处理方法中成员变量和参数重名的情况 this 可以看作是一个变量,它的值是当前对象的引用
_id:1
age = _age; }
_age:25
public static void main(String[] args) {
Person tom = new Person(1, 25); } }
tom:XXX Stack
id:1 age:25
Heap
例子:
class BirthDate { private int day; private int month; private int year; public BirthDate(int d, int m, int y) { //构造方法 day = d; month = m; year = y; }
= name; id = sid++; } public void info(){
name mimi:xxx
"mimi" sid:100
数据区System.out. Nhomakorabearintln ("My name is "+name+" No."+id);
}
id name
id name
public static void main(String arg[]){

5. 构造函数(构造方法) 使用 new +构造方法,创建一个新的对象。 构造函数是定义在 Java 类中的一个用来初始化对象的函数。 构造函数没有返回值。
public class Person {
int id;
int age;
tom:XXX
Person(int _id, int _age) { id = _id;
刚开始,b 执行 d1 执行的对象,但是 new 出 来了一个新对象,b 指向了新的对象
执行完之后,b 这个局部变量消失了,堆里面 的内存不是马上消失,垃圾收集器收集的时 候才消失,但是栈里面的内容马上消失的! 对象里面的值(d1)依然没有变!
change3,把 d2 传进来,b 指向了 d2 指向的 对象
(package)机制,提供类的多重类命名空间 八. 类的继承和权限控制 Java 中使用 extends 关键字实现类的继承机制 通过继承,子类自动拥有基类的所有成员(成员变量和方法) Java 只支持单继承,不允许多继承
name Person
age
student
school
new 一个子类对象出来的时候内存的情况 权限控制:
public void setDay(int d) { day = d;
} public void setMonth(int m) {
month = m; } public void setYear(int y) {
year = y; } public int getDay() { //int 表示返回值类型
public class Leaf(){
int i = 0;
Leaf(int i) {
this.i = i;
}
…main() {
Leaf lf = new Leaf(9);
}
}
注意这里有两个 i。
六. static 关键字
在类中,static 声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用
如果子类构造方法中既没有显示调用基类构造方法,而基类中又没有无参的构造方法,
则编译出错。
十一. Object 类与 toString()方法,hashCode,equals 方法
Object 类中定义有 public String toString()方法,其返回值是 String 类型,描述当前对象
时被初始化,对于该类的所有对象来说,static 成员变量只有一份。
用 static 声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以
在 static 方法中不可方法非 static 方法。
静态方法不再是针对某个对象调用,所以不能访问非静态成员。
可以通过对象引用或类名(不需要实例化)访问静态成员。类名.静态成员变量.
相当于
public static void main(String[] args) {
public class toString {
Dog d = new Dog();
public static void main(String[] args) {
System.out.println("d: " + d);
String s = new String(“aaa”); s[],s 在栈中,”aaa”在堆里面。 4. 对象的创建和使用 必须使用 new 关键字创建对象。 使用对象(引用).成员变量或来引用对象的成员变量。
使用对象(引用).方法或来引用对象的方法。 同一类的每个对象有不同的成员变量存储空间
Dog d = new Dog();
}
System.out.println("d: " +
}
d.toString());
输出:
}
d: Dog@de6ced
}
继承自 Object,可以重写该方法。建议所有子类都重写此方法(Java API)
getClass().getName() + '@' + Integer.toHexString(hashCode())
System.out.println("date=" + date); d1.display(); d2.display(); } public void change1(int i){ (2)i = 1234(3); } public void change2(BirthDate b) { (5)b = new BirthDate(22,2,2004); (6) } public void change3(BirthDate b) { (8)b.setDay(22);(9) } }
的有关信息。
在进行 String 与其他类型数据的连接操作时(System.out.println(“info ” + person )),将自
动调用对象类的 toString()方法。
可以根据需要在用户自定义类型中重新 toString()方法。
public class toString {
九. super 关键字
student:xx
name Person
age
super this
十.继承中的构造方法 子类的构造过程中必须调用基类的构造方法 子类可以在自己的构造方法中使用 super()调用基类的构造方法
使用 this 调用本类另外的构造方法; 如果调用 super,必须写在子类构造方法的第一行 使用子类的构造方法中没有显示的调用基类构造方法,则系统默认调用基类无参数的构 造方法。
一 面向对象设计思想 面向对象设计思想是,从现实世界中客观存在的事物出发构造软件系统,并在系统的构
造中尽可能运用人类的自然思维方式。 面向对象更加强调运用人类在日常思维逻辑中经常采用的思想方法与原则,如抽象、分
类、继承、聚合、多态。 对象用计算机语言对问题与中事物的描述,对象通过属性(attribute)和方法(method)来分
别对应事物所具有的静态属性和动态属性。 类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一对象所因具有的静态
和动态属性。 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。 类(对象)之间的关系:
1. 关联关系:映射到代码一个类的方法里面是另外一个类的对象,我的方法的参数是 你这个类的对象
类名 + „@‟ + hash 编码。
对象
对象
hashCode
对象
对象
对象
对象
java 虚拟机,用一张表记录每个对象在什么位置上,这个表一般用哈希编码来记录,每个对 象都有自己独一无二的哈希编码,根据编码可以找到相关对象,并可以找到对象的位置。 equals 方法:提供定义对象是否“相等”的逻辑,对于任何非空引用值 x 和 y,当且仅
2. 继承关系:什么什么是什么
3. 聚合关系 聚集:谁谁是谁的一部分。组合:咱们俩密不可分!
4. 实现关系:
5. 多态
总结: 考虑问题里面有哪几个类,哪几个对象;找名词 每种类有哪些属性和方法; 类和类之间的关系。
二 Java 与面向对象 对象是 Java 的核心,在 Java 中“万事万物皆对象”。 对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体。 类是用来创建同一类型的对象的模板,在一个类中定义了该类对象所具有的成员变量以
相关主题