面向对象的一些例子

来源:互联网 发布:开通淘宝店铺流程 编辑:程序博客网 时间:2024/05/22 17:03
1.final:
修饰属性:修饰一个变量,这个变量就变成了常量。
修饰方法:方法不能被子类重写。
修饰类:这个类不能被继承。
abstract:修饰类,把类变成抽象类

2.接口和抽象类的联系和区别:
 接口和抽象类的联系:
 接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承。
2接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。
 
接口和抽象类的区别:
1接口里只能包含抽象方法,静态方法和默认方法,不能为普通方法提供方法实现,抽象类则完全可以包含普通方法。
2接口里只能定义静态常量,不能定义普通成员变量,抽象类里则既可以定义普通成员变量,也可以定义静态常量。
3接口不能包含构造器,抽象类可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。
 接口里不能包含初始化块,但抽象类里完全可以包含初始化块。
 一个类最多只能有一个直接父类,包括抽象类,但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java单继承不足。

3.内部类的类型:
成员内部类:不含关键字static就是成员内部类,可以自由的引用外部类的属性和方法
静态内部类:指被声明为static的内部类,不能访问外部类的普通成员变量,只能访问外部类中的静态成员变量和静态方法。
方法内部类:指定义在一个代码块内的类,作用范围为其所在的代码块。局部类类似于局部变量一样,不能被public、protected、private以及static修饰,只能访问方法中定义为final类型的局部变量。
匿名内部类:是一种没有类名的内部类,不使用关键字class、extends、implements,它必须继承其他类或实现其它接口。

  4.java中我们可以调用System.gc();方法来让JVM(java虚拟机执行垃圾回收),但是什么时候执行还是靠JAVA的JVM来自动执行的。







写一个关于青蛙和兔子的程序

其中用到了抽象abstract 接口implements 多态等知识 

//动物类
package com.mxdx;


public  class Animal {


String  name;
String  color;
String  type;

public void eat(){

}
public void song(){

}
}
//动物接口
package com.mxdx;


public interface Animall {


public void swimming();

}//青蛙类
package com.mxdx;


public  class Frog extends Animal implements Animall{




public void swimming() {
System.out.println("虽然不是鱼,但青蛙也是泳坛高手");
}

public void song(){
System.out.println("那只"+this.color+"名叫"+this.name+"的青蛙正在呱呱叫");
}

public void eat(){
System.out.println("青蛙"+this.type+"爱吃昆虫");
}


}
//兔子类
package com.mxdx;


public class Rabbit extends Animal{



public void song(){
System.out.println("那只"+this.color+"名叫"+this.name+"的兔子正在叽叽叫");
}



public void eat(){
System.out.println("兔子是"+this.type+"爱吃胡萝卜");
}

}
//测试类
package com.mxdx;


public class Text {


public static void main(String[] args) {
Animal f=new Frog();
Animal r=new Rabbit();

f.name="大牛";
f.color="绿色";
f.type="非哺乳类";
r.name="美人";
r.color="黑色";
r.type="哺乳类";
f.song();
f.eat();
((Frog) f).swimming();
r.song();
r.eat();

}
}



原创粉丝点击