2010-11-25 java培训java内容第九次课
这次课我们主要学习了java内容里很重要的一章,面向对象编程.
1. 面向对象概述:
1> 面向对象的分析(OOA,Object Oriented Analysis)
2> 面向对象的设计(OOD,Object Oriented Design)
3> 面向对象的编程(OOP,Object Oriented Programming)
2 面向对象的三大特点:封装,继承,多态
1>封装时需要使用修饰符public,private,protected和缺省的修饰符.
public表示公有的,用public修饰的属性和方法,其他任何类都可以访问.这是最开放的访问权限.前面我们学习过的方法都是用public修饰的,其他类都可以自由的访问以修饰的方法.
private表示私有的,用private修饰的属性和方法,其他任何类均不能访问,只能在当前类内部被访问.
protected表示受保护的,用protected修饰的属性和方法,允许相同包中的其他类(包括子类)或非相同包的子类访问.
缺省修饰符,就是在类和方法前面没有任何修饰符,缺省修饰符的属性和方法允许相同包中的其他类进行访问,不允许其他包中的类(包括子类)访问.
实例:
package com.huizhong
public class Student{
public Student(){......}
private String name;
private boolean isMale;
private int age;
private String favourite;
public void display(){....}
private String getSexStr(){
return isMale?”帅哥”:”靓妹”;
}
protected void study(){.....}
}
注:如果只有get的方法,没有set方法,称为只读属性;如果只有set方法,没有get方法称为只写属性.
方法的重载指的是:在一个类中可以定义有相同的名字,但参数不同时的多个方法,调用时会根据不同的参数表选择对应的方法.
实例:
public class Computer{
public int add(int number1, int number2){
return num1+num2;
}
public long add(long number1, long number2){
return num1+num2;
}
public int double(double number1, double number2){
return num1+num2;
}
}
方法的重载要求方法名相同,方法参数不同,方法参数不同包括:
1 方法参数的数目不同
2 方法参数的类型不同
3 相同数量的参数中,不同参数类型在方法参数列表中的顺序不同。
2>java中继承使用extends关键字实现,子类继承父类的所有属性和方法(构造方法除外)。
package demo3;
public class Test {
public static void main(String[] args) {
Mp3 mp3=new Mp3();
mp3.save();
mp3.get();
mp3.play();
}
}
public class Mp3 extends DiskHard {
public void play(){
System.out.println("play!!!!");
}
}
public class DiskHard {
public void save(){
System.out.println("save data");
}
public void get(){
System.out.println("get data");
}
}
内容 | Public | Protected | 缺省 | Private |
同类访问 | 可用 | 可用 | 可用 | 可用 |
同包其他类访问 | 可用 | 可用 | 可用 | 不可用 |
同包子类访问 | 可用 | 可用 | 可用 | 不可用 |
不同包子类访问 | 可用 | 可用 | 不可用 | 不可用 |
不同包非子类访问 | 可用 | 不可用 | 不可用 | 不可用 |
3>多态:
多态在面向对象程序设计中,就是把子类的对象赋值给父类,用父类的引用调用方法的时候,具体执行方法就是子类的对象.
实例:
package demo8;
public class Test {
public static void main(String[] args) {
Car c=new Bus();
Car tran=new Tran();
Driver driver=new Driver();
driver.drive(tran);
}
}
public class Car {
public void start(){
System.out.println("车启动");
}
public void change(){
System.out.println("车换档");
}
public void stop(){
System.out.println("车停止");
}
}
public class Bus extends Car {
@Override
public void change() {
System.out.println("公交车换档");
}
@Override
public void start() {
System.out.println("公交车启动");
}
@Override
public void stop() {
System.out.println("公交车停止");
}
}
public class Tran extends Car {
public void start(){
System.out.println("火车启动");
}
@Override
public void change() {
System.out.println("火车换档");
}
@Override
public void stop() {
System.out.println("火车停止");
}
}
public class Driver {
public void drive(Car car){
car.start();
car.change();
car.stop();
}
}
3 Object类
Java.lang.Object类是所有类的父类,当一个类没有使用extends关键字显示继承其他类的时候,该类默认的继承了Object类,因此所有类都是Object的子类,都具有Object类的方法和属性.能够被外界访问的Object类的主要成员有:
返回类型 | 方法名 | 方法说明 |
Object | Clone() | 创建并返回此对象的一个副本 |
boolean | equals(Object obj) | 指示其他某个对象是否与对象”相等” |
void | finalize() | 当垃圾回收器确定不存在该对象的更多引用时,由对象的垃圾回收器调用此方法 |
int | HashCode() | 返回该对象的哈希玛值 |
tring | toString() | 返回该对象的字符串表示 |
4 this关键字:
在类的方法定义中使用的this关键字代表使用该方法的对象的引用.
当必须指出当前使用方法的对象是谁时要使用this.
有时使用this可以处理方法中的成员变量和参数重名的情况.
this可以看作是一个变量,它的值是当前对象的引用.
心得体会:这次课我们学习的内容很多,都是关于面向对象的编程,在内容的理解上也是有一定的难度,这需要我们深刻的去体会和理解它,掌握它的精华,将它运用到我们的实践中去,我们就会深切的感触到他的奥妙所在,因此我们要不断地去理解,争取将它全部弄懂,弄会,能够熟练的运用它.达到我们学习的目的.