java夯实基础-类和接口

来源:互联网 发布:如何打开23端口 编辑:程序博客网 时间:2024/06/01 12:52

本文总结类的三大特点:封装、继承、多态;说明了抽象类的特点;说明了接口的特点及注意事项。

1、类

package com.wllfengshu.test;/** * 测试类的特点:封装、继承、多态 * @author Administrator * */public class Test1类 {public static void main(String[] args) {//测试继承Dog dog=new Dog();dog.name="狗";dog.cry();//狗叫了//测试多态的一种:重写Pig pig=new Pig();pig.name="猪";pig.cry();//猪哭了//测试多态的另一种:重载Cat cat=new Cat();cat.name="猫";cat.sleep(1);//参数为整形cat.sleep(0.6);//参数为小数cat.sleep("今天", 2);//参数个数为2个//另一种多态:同一个操作,被不同类型对象调用,产生不同的行为Animal a1=new Dog();a1.name="狗";Animal a2=new Pig();a2.name="猪";a1.cry();//把狗类放到父类对象中,调用cry(),显示狗做的事情a2.cry();//把猪类放到父类对象中,调用cry(),显示猪做的事情}}//把动物的共同属性和动作抽象出类,体现了封装特点class Animal{public String name;public void cry(){System.out.println(name+"叫了");}}class Dog extends Animal{//子类继承父类的非私有的属性和方法}class Pig extends Animal{//此处重写父类方法public void cry(){System.out.println(super.name+"哭了");}}class Cat extends Animal{//重载public void sleep(int time){System.out.println(super.name+"睡了"+time+"小时");}//参数类型不同,构成重载public void sleep(double time){System.out.println(super.name+"睡了"+time+"小时");}//参数个数不同,构成重载public void sleep(String day,int time){System.out.println(super.name+day+"睡了"+time+"小时");}}
2、抽象类

package com.wllfengshu.test;/** * 测试抽象类、抽象方法 * @author Administrator * */public class Test2抽象类 {public static void main(String[] args) {ImpAbs impAbs=new ImpAbs();impAbs.testAbs2();impAbs.bb=3;//抽象类中的成员变量允许修改(即和普通类中成员变量一致)}}abstract class Abs{final public int aa=1;public int bb=2;//含有抽象方法的类一定是抽象类public abstract void testAbs1();//抽象类中既可以有抽象方法,也可以有非抽象方法public void testAbs2(){System.out.println("测试抽象类中的抽象方法2");}//final abstract void testAbs3();//错误:抽象类不能实例化,继承抽象类的子类必须实现抽象类中//的抽象方法,所以final 和abstract不能同时修饰}class ImpAbs extends Abs{@Overridepublic void testAbs1() {//必须重写父类方法System.out.println("测试抽象类中的抽象方法1");}}
3、接口
package com.wllfengshu.test;/** * 测试接口 * @author Administrator * */public class Test3接口 {public static void main(String[] args) {//new Interfe();//错误:接口不允许实例化ImpInter impInter=new ImpInter();impInter.testInter1();//impInter.bb=3;//错误:接口中所有的属性都是默认public final}}interface Interfe{public final int aa=1;int bb=2;//接口中所有的属性都是默认public final,故可以省略//含有抽象方法的类一定是抽象类public abstract void testInter1();void testInter2();//接口中所有的方法都是默认public abstract,故可以省略//public abstract void testInter2(){//错误:接口中方法都为抽象方法//}} class ImpInter implements Interfe{@Overridepublic void testInter1() {//必须重写接口中的抽象方法System.out.println("test1");}@Overridepublic void testInter2() {System.out.println("test2");}}