JAVA---抽象类,接口

JDK8之后运行一个类字节码文件加载在方法区,方法被调用的时候会进栈。
new出来的都会在堆里面开辟空间,每一个都有地址值

this关键字

  • this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)
    • 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
    • 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量

构造方法的注意事项

  • 构造方法的创建

如果没有定义构造方法,系统将给出一个默认的无参数构造方法
如果定义了构造方法,系统将不再提供默认的构造方法

  • 构造方法的重载

如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法

标准类制作

① 类名需要见名知意

② 成员变量使用private修饰

③ 提供至少两个构造方法

  • 无参构造方法
  • 带全部参数的构造方法

④ get和set方法

​ 提供每一个成员变量对应的setXxx()/getXxx()

⑤ 如果还有其他行为,也需要写上

对象的内存管理:

final:
修饰时为常量不可改变

 final int a1 = 10;
        a1 = 20;

修饰类时:该类不可被继承

 class student extends people{
        (报错)
    }
    final    class people{
        
    }

修饰方法时:该方法不可被重写

  class student extends people{
            public void use(){
                
            }
    }
    class people{

        public final void use(){
            
        }
    }

abstract:
1.抽象类里面不一定有抽象方法,但有抽象方法一定要定义为抽象类
2.定位为抽象方法是不可以有函数体的
3.抽象类不可以创造对象,如果不能重写所有的抽象方法就定义为抽象类
4.抽象类可以有普通函数,成员变量等,构造方法

class student extends people{
        @Override
        void use() {
        }
    }
    abstract class people{
       abstract void use();
    }

案例:
在这里插入图片描述

abstract class  Animal{
    private String name;

     public String getName() {
         return name;
     }

     public void setName(String name) {
         this.name = name;
     }

     abstract void cry();

 }

 class Dog extends Animal{

     @Override
     void cry() {
         System.out.println(this.getName()+"------");
     }
 }


class Cat extends Animal{

    @Override
    void cry() {
        System.out.println(this.getName()+"------");
    }
}

模板方法的设计模式;模板方法用final进行修饰防止子类将其修改了
在这里插入图片描述

接口:
在这里插入图片描述

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值