面向对象03

关键字final

final 是一个关键字,表示最终的意思。可以用来修饰类,修饰变量,修饰方法。
修饰类:修饰类,表明该类是最终类,不能被继承
修饰变量:如果final修饰变量,表明该变量是常量,不能修改
修饰方法:如果方法被final修饰了,表明该方法是最终方法,不能重写。

关键字static

static:是一个关键字,静态的意思,可以修饰成员变量和成员方法
static修饰成员的特点:
        A:被类的所以对象共享
            其实也是判断一个成员是否对类的所有成员共享
            就是判断是否该用static的修饰条件

        B:可以通过类名直接访问            Student.graduateFrom="河南工院"
        C:优先于对象存在
        D:随着类的加载而加载
public class StaticDemo {
    public static void main(String[] args) {
        Student.graduateFrom="河南工院";
        Student s1 =new Student();
        s1.name="林青霞";
        s1.age=30;
        //s1.graduateFrom="河南工院";
        s1.show();
        System.out.println("-----------");

        Student s2 =new Student();
        s2.name= "刘德华";
        s2.age=28;
        //s2.graduateFrom="河南工院";
        s2.show();

    }
}
非静态的成员方法:
            能访问静态的成员变量
            能访问静态的成员方法
            能访问非静态的成员变量
            能访问非静态的成员方法

    静态的成员方法:
            能访问静态的成员变量
            能访问静态的成员方法

    注意事项:
            静态成员方法中不能出现thissuper这样的关键字。
            原因是:静态是随着 类 的加载而加载,thissuper,这样的关键字是随着 对象 的创建而存在。
                    先进内存,不能访问后进内存的。

 */
public class Student {
    //非静态的成员变量
    private String name="林青霞";
    //静态的成员变量
    private static int age = 30;

    //非静态成员方法
    public void show(){
        this.name="刘德华";
        System.out.println(name);
        System.out.println(age);
        show2();
        show4();
    }

    public void show2(){}

    //静态成员方法
    public static void show3(){

        //System.out.println(name);
        System.out.println(age);
        //show2();
        show4();



    }

    public static void show4(){}
}

```java
在这里插入代码片

## 抽象类的概念

> 个人理解
> 抽象的类代表的是某一特征类型的类的总称,不代表具体的对象,如,动物(可以代表鸡鸭鹅兔等,但不能说动物是鸡鸭鱼兔。)。
> 抽象类与其他类的区别在于是否有abstract修饰。


## 标题

抽象类的特点

```java
/*
    抽象类的特点:
        A:抽象类和抽象方法必须使用abstract关键字修饰
        B:抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
        C:抽象类不能实例化
                抽象类如何实例化呢?
                参照多态的方式,通过子类对象实例化。
        D:抽象类的子类
                要么重写抽象类中的所有的抽象方法//@overrrid public void 方法名(){...}
                要么是抽象类//在类前加上abstra修饰
 */

抽象类的成员

成员变量:
有成员变量,成员变量可以是变量也可以是常量。
构造方法:
有构造方法。
抽象类中的构造方法的作用?
用于子类访问父类数据的初始化
成员方法:
有成员方法,可以是抽象的成员方法,也可以是非抽象的。
抽象方法:限定子类必须完成某些动作
非抽象方法:提高代码复用性。 是继承得来的。

抽象类案例练习

文案简析
分析:从具体到抽象
实现:从抽象到具体
使用:使用是具体的类的对象

分析:
基础班老师:
成员变量:name,age
构造方法:无参,带参
成员方法:getXXX(),setXXX(),teach(){}

        就业班老师:
                成员变量:name,age
                构造方法:无参,带参
                成员方法:getXXX(),setXXX(),teach(){}

        抽象的老师类:
                成员变量:name,age
                构造方法:无参,带参
                成员方法:getXXX(),setXXX(),teach();
                //方法不带大括号说明是抽象方法
代码演示
要求,一个抽象类,两个具体类(继承抽象类)。
public class TeachDemo {
    public static void main(String[] args) {
        //使用的是具体的类的对象
        BasicTeacher b = new BasicTeacher("林青霞",30);
        b.teach();
        System.out.println("--------------");
        b = new BasicTeacher();
        b.setName("林青霞");
        b.setAge(30);
        b.teach();
        System.out.println("------");


        //多态形式的测试

        Teacher t = new BasicTeacher();
        t.setAge(30);
        t.setName("林青霞");
        t.teach();
        System.out.println("----------------");

        t= new BasicTeacher("林青霞",30);
        t.teach();
    }
}

/*
    包:其实就是文件夹
    作用:就是对类进行分类管理

    举例:
        学生:增加,修改,查询,删除
        老师:增加,删除,修改,查询
        ...

        方案一:按照功能分
            com.itheima.add
                AddStudent
                AddTeachER
            com.itheima.delete
                Delete.Student
                Delete.Teacher
            ...

        方案二:按照模块分
            com.itheima.student
                AddStudent
                DeleteStudent
                ...
            com.itheima.teacher
                AddTeacher
                DeleteTeacher

        包的定义格式:
            package 包名;
            如果是多级包 用 . 隔开即可

        注意事项:
            A:package必须时程序的第一条可执行语句
            B:package语句在java文件中只能有一个

四种权限修饰符


    权限修饰符:
                本类      同一个包下(子类和无关类)   不同包下(子类)         不同包下(无关类)
    private:    Y
    默认:       Y             Y
    protected:  Y             Y                         Y
    public:     Y             Y                         Y                         Y
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值