包,抽象类,接口

包的概述和使用

抽象类的概述和使用案例

接口的概述和使用案例

掌握访问修饰符的使用

1-1  包的概述

  Java中的一个package(包)就是一个类库单元,包内包含有一组类,他们在单一的名称空间下被组织在了一块,这个空间就是包名

 

 1-2  包的作用

  1. 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用
  2. 避免相同名字的类造成冲突
  3. 包也限定了访问权限,拥有包访问权限的类才能访问包中的类

1-3  包的声明

  语法结构: package pkg1[.pkg2[pkg3...]]

2-1  抽象类

关键字:abstract----抽象

  概述:

    在面向对象的领域,一切皆对象,同时所有的对象都是通过类描述的,但并不是所有的类都是用来描述对象的(没有足够的消息来描述具体的对象),而需要其他具体的类来支撑他,我们称为:抽象类

  使用:

    可以用来修饰类,修饰方法,不能修饰属性,构造器等结构

    不能用来修饰私有方法

  abstract修饰类

    不能实例化

  注意事项:

    包含抽象方法的类一定是抽象类

    抽象类中不一定有抽象方法

    若子类重写了父类的所有的抽象方法后,子类可以实例化

    如果没有重写所有抽象方法,那么这个子类也必须的是抽象类

    不能和static,final,并列修饰同一方法

package model;
/*
 * 动物的抽象类
 */
public abstract class Animal {
    //属性
    private String name;
    //抽象方法
    public abstract void cry();
    //普通方法
    public void eat() {
        System.out.println("动物可以吃饭");
    }
}
----------------------------------------------
package model;

public class Cat extends Animal {

    @Override
    public void cry() {
        System.out.println("Cat 喵..喵..喵..");
    }

}
----------------------------
package model;

public class Dog extends Animal {
    //重写方法
    @Override
    public void cry() {
        System.out.println("Dog 汪..汪..汪..");
    }

}
public class AnimaTest {
    public static void main(String[] args) {
        Animal a = new Dog();
        a.cry();
        Animal b = new Cat();
        b.cry();
    }
}

3-1  接口  

  概述:

    1.使用interface来定义

    2.在java中,接口和类是并列的两个结构

    3.如何定义接口:定义接口中的成员

        只能定义全局常量和抽象方法

        全局常量:public static final的

        抽象方法:public abstract

    4.接口中不能定义构造器,只能实现(implements)

      如果接口实现类覆盖了接口中所有的抽象方法,则此类可以实例化,如果实现类没有覆盖抽象方法,则此实现类仍为一个抽象类

    5.java可以实现多个接口 --->弥补了java单继承性的局限性

        格式:(先写继承后写实现)

        class A extends B implements C,D{}

    6.接口与接口之间可以实现多继承

    7.在jdk1.8之后可以定义静态方法和默认方法

package Interface;

public interface  Animal {
    //属性
    public static final    String name = "权志龙";
    //抽象方法
    public abstract void cry();
    //普通方法
    /*public static void eat() {
        System.out.println("eat ....");
    }*/
}
------------------------------
package Interface;

public class Cat implements Animal {

    @Override
    public void cry() {
        System.out.println("interface cat  喵喵喵");
    }

}
--------------------------
package Interface;

public class Dog implements Animal,Animal2 {

    @Override
    public void cry() {
        System.out.println("interface  dog 汪汪汪");
    }

    @Override
    public void sleep() {
        System.out.println("Interface  dog  吃饭");
        
    }

}
---------------------
public class InterfaceTest {
    public static void main(String[] args) {
        Animal dog = new Dog();
        System.out.println(dog.name);
        dog.cry();
        Animal2 a2 = new Dog();
        a2.sleep();
        Animal2.cat();
        Animal cat = new Cat();
        cat.cry();
    
    }
}

4-1  抽象列和接口的区别

  

 

 5-1  访问修饰符

  

 

 

 

posted @ 2021-02-20 23:58  大可耐啊  阅读(91)  评论(0编辑  收藏  举报