Java笔记SE-06面向对象(3)

面向对象

–抽象类

–实现接口

–泛型

–抽象

  --abstract
  当一个类的某个操作没法具体实现时,这个操作可以定义为抽象方法。
  抽象方法使用abstract修饰的方法,只有方法的声明部分,没有方法体。

抽象abstract使用方法:
  * 抽象可供给类和方法使用
    但是抽象类不能实例化对象,只能调用方法
  public abstract class Pet {
	public abstract void method() ;
}

测试抽象类的特点:

 * 1) 只要使用abtract修饰的类就是抽象类
 * 2) 含有抽象方法的类必须定义 为抽象类,但是,抽象类中不一定含有抽象方法
 *    有时,对现有的类进一步抽象形成更高层级的类(更抽象的类),如食物类,动物类, 
      它们是没法实例化,这种情况下,可以定义为抽象类
 * 3) 抽象类是一种引用数据类型, 可以定义变量, 但是抽象类不能实例化对象,
 *    抽象类定义引用可以赋值子类对象
 * 4) 抽象类肯定含有构造方法, 子类创建对象时调用子类构造方法,
      子类构造方法体执行前会先执行父类的构造方法
 * 5) abstract与final不能同时使用

接口实现
–接口
定义接口 interface
实现接口 implements

Java程序中的接口是用来扩展类的功能的,可以把接口理解为功能的封装,
Java中的接口也可以理解为一个操作规范(协议)。

一、

Java接口定义的语法:
[修饰符] interface 接口名 {
接口中的方法默认使用 public abstract修饰
接口中的字段默认使用 public static final修饰
   接口中可以定义   public static 静态方法
定义public default方法
}

二、

Java接口的使用:
 [修饰符]  class  类名  implements  接口{
需要重写接口的抽象方法
--Java接口多态--
  1) 接口是一种引用数据类型,可以定义变量,但是接口不能实例化对象,
     接口引用可以赋值实现类对象
  2) 接口多态 , 通过接口引用调用接口中抽象方法,实际上执行的是实现类对象的方法
  
     --而接口存在的意义就是为了实现多态。

举栗:

//定义飞行接口
 public interface Flyable {
	//接口中的方法默认使用public abstract修饰
	void fly();
	
}

	//定义鸟类,一个类实现了接口,需要重写接口中抽象方法
public class Bird implements Flyable {

	@Override  表示重写父类中的方法
	public void fly() {
		System.out.println("小鸟在天空中自由飞翔");
	}

}

//主函数
public class Test {

	public static void main(String[] args) {
		//1)接口定义变量
		Flyable flyable ;
		//2)错误写法,接口不能实例化对象
//		flyable = new Flyable();//Cannot instantiate the type Flyable
		//3)接口引用可以赋值实现类对象
		flyable = new Bird();
		flyable.fly();
		
		flyable = new Plane();
		flyable.fly();
		
	}

}

泛型

 *  类<泛型> 定义 = new 类<泛型>();
 *  使用泛型的好处是将数据统一化
 *  泛型只能使用封装数据类型
 *  在集合中使用泛型

例:

public class GenericsTest {
    public static void main(String[] args) {
        new GenericsTest().Test1();     //匿名对象遍历
    }

    public void Test1(){
        //使用封装数据类型
        //定义泛型后其他数据类型不能声明
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(66);
        list.add(77);
        list.add(88);
        list.add(99);

        //遍历,只遍历Integer数据类型
        for (Integer score : list){
            //避免数据强转
            int stuScore = score;
            System.out.println(stuScore);
        }

        /*
        //第二种遍历方式
        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()){
            int stuScore = iterator.next();
            System.out.println(stuScore);
        }*/
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值