Day10_this static package import 权限控制 extend super Override

本文详细解释了Java中的this关键字、静态成员与实例成员、构造方法与构造顺序,以及继承、方法覆写、super的作用。还涵盖了包机制、import和权限控制符等知识点。
摘要由CSDN通过智能技术生成

1.this

        1.1是什么

                是当前对象内存地址,是每一个对象中保存自己内存地址的一个引用变量

        1.2能干什么

                1.在成员方法或者构造方法中,使用this来区别成员变量和局部变量

class Student{    //在成员方法中区别是成员变量和局部变量
    int age = 2;
    int score = 1;
    public static void m1(int age){
        this.age  = 1;
    }
    public m2(int score){
        this.score = score;
    }
}

                2.在构造方法中,可以重载调用当前对象的其他构造方法(放在第一行)

public static void main(){
    Info i = new Info(1970,1,1);
    i.print();
    
    
    
}


class Info{
    private int year;
    private int month;
    private int day;

    public info(){
        this(1970,1,1);
        }
    public void print(){
    Sysout.out.println(year+"年"+month+"月"+day+"日");
    }
}

                3.return this链式调用

        1.3怎么用

public class This_02 {
	public static void main(String[] args) {
		This_02 t = new This_02();
		//链式调用
		//只要前者的返回值是能够调用后者的对象则可以进行链式调用
	}
	public void m1(){
		System.out.println("m1执行了");
	}
	public This_02 m2(){
		System.out.println("m2执行了");
		return this;
	}
}

注意:this不会出现在静态方法之中 

2.static

        2.1是什么

                是修饰符,来区分静态变量和成员变量

        2.2能干什么

                1.使用static修饰的变量是成员变量                     

public static void m1(){ //静态方法
    static int i = 1;    //静态变量
}

                2.使用static修饰的方法是成员方法

                3.成员语句块

static{
    Sysout.out.println("静态语句块");
}

生命周期只有一次会在main函数之前自动调用,做初始化操作 

        2.3怎么用

                注意:访问类静态属性加载该类,做初始化操作

3.实例语句块

                简单来讲可以看做没有名字的成员方法,只有一对大括号.

                每次创建对象时,实例语句块都会被执行,并且在构造方法之前执行

                执行顺序:静态 - > main->实例->构造

4.软件包机制

                软件包机制可以将文件分类管理,另外解决了命名冲突

                package限制的是class文件的存放位置,和java的源文件没有关系

                package语句必须在第一行

                带有package 语句 的代码这样运行

                编译 javac-d./encoding utf-8 xxxx.java

                运行 java  包名.类名

5.import

                如果用到的是java.lang.* 类,则不需要导入,因为java.lang包下为核心类

                同包的类可以直接调用,不同包的类应该写全名(包名.类名)

                自动导入包可能会导名字相同的包但是不是自己需要的包

6.权限控制符

        public 公共的,在哪里都可以访问,只要能找得到

        private 私有化,只有在当前类中可以使用

        protected 继承权限,受保护的,同包可以使用或者继承关系时,子类可以使用

        default  如果不写权限控制,则为包权限,只有同包的类可以使用,其他地方无法使用    

7.继承

        继承是从已有的类派生出的新类,新的类有能力吸收已有的类的属性和值,并且还扩展新的功能

        java只支持单一类的继承,一个类只有一个父类,一个父类会有很多子类

        java的类的继承会传递的

        引入继承会提高代码的复用性

        当一个类没有显示被另一个类继承时,会默认继承java.lang.object  这个是根类

        被私有化的类是不能被继承

8.super

        super是保存父类型特征用的,用于在子类中保存父类

        在子类成员/构造方法中区分父类与子类同名的成员变量,必须在子类构造方法的第一行

        如果在子类构造方法中,没有显示this()或者super()默认第一行是super()调用父类无参构造,this与super不能同时出现

9.方法覆写

        Override 方法的覆写

        是对继承方法的重新编写

        什么时候需要用到覆写?

        当父类的功能无法满足子类的需要时,子类要根据自己的要求重写继承父类的方法

        要求

                必须要有继承的关系

                方法名必须相同,返回值,参数列表,都必须相同

                重新的方法不能比原来的方法有更低的访问权限

                不能比原方法有更宽泛的异常

                覆写特指成员方法,只有成员方法会发生覆写

        覆写的目的

        1.满足需求        2.减少错误        3.访问的权限变广泛        

        Override与Overload的区别

                参数列表是否与原方法相同

        @Override注解 源码注解 生成class文件后就会被删除掉

        该注释是一种检查机制,会检查该方法是否符合方法覆写的要求

        

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值