static关键字

static:关键字静态的

被static关键字修饰的内容为静态内容

成员是属于对象的跟随对象使用,应为成员在对象的堆内存空间中,static修饰的静态的内容是属于类,可以随类使用。

静态变量都是独一份的,不存在对象的堆内存中,在静态区中在类第一次加载完成之后就会初始化静态内容。

成员的需要创建对象才在对象堆中存在成员,没有对象就没有成员。

在静态的内容中可以直接使用静态内容,但是不能直接使用成员内容,需要跟随对象使用成员,在成员内容中可以直接使用静态也可以直接使用成员

public class StaticDemo01 {//成员位置 : 类中方法外部//成员变量int a = 10;//静态变量static String str = "哈哈";public static void main(String[] args) {//局部//static int i = 1; static不能修饰局部,只能修饰成员//测试静态内容的使用方式System.out.println(str);//当前类中类名可以省略System.out.println(StaticDemo01.str);StaticDemo01 sd = new StaticDemo01(); //当前类型对象System.out.println(sd.a);System.out.println(sd.str);System.out.println(Math.random());System.out.println(Math.PI);}/*成员方法 : 需要被对象调用,在成员方法中的成员变量,默认指代当前调用成员方法的对象的成员*/public void test(){System.out.println(this.str);System.out.println(this.a);}
}

block:块

{ } ——>自成作用域。

{ }:方法中|语句块中——>局部代码块|普通语句块

​ 执行时机:跟随方法调用。

{ }:类中方法外部——>构造块

​ 执行时机:创建对象new的对象。

static{ }:类中方法外——>静态块

​ 执行时机:类第一次加载完毕之后初始化。

注意:构造代码先于构造器之前运行,当存在多个构造块,从上到下依次执行,多个静态块从上到下依次执行,静态块在类第一次加载完成之后执行,并且只执行一次。

顺序:静态块——>main——>构造块——>构造器

public class BlockTest02 {public static int  a = 0;{a = 10;System.out.println(" 3、非静态代码块执行a=" + a); //}    static {a = 6;System.out.println("1、静态代码块执行a=" + a); //}public BlockTest02() {this(a); //System.out.println("6、"+a);  //System.out.println("7、无参构造方法执行a=" + a); //}public BlockTest02(int n) {System.out.println("4、"+n); //System.out.println("5、"+a);//}public static void main(String[] args) {System.out.println("2、main"); //BlockTest02 tsc = new BlockTest02();//6 10 10 6 10 10}
}

包机制

包机制:为管理众多java文件

导包:指明使用java类位置

不需要导包的类:

​ 同包下的类

​ java.lang包下的内容不需要导包

导包的方式:

​ 使用类型的时候指定类型的权限定名.包名.类名只在当前这一次有效。

​ 使用import 包名.类名 导包。定义在类上面,导入一次当前类中都可以使用。

​ 模糊匹配 *:降低编译效率

​ 静态导入 import static 包名.类名.静态内容。

package package03;
//模糊匹配
import java.util.*;//导入静态内容
import static java.lang.Math.PI;
//导入静态方法不要添加(),因为方法名()这叫方法的调用,执行方法中的代码
import static java.lang.Math.random;
public class ImportDemo01 {public static void main(String[] args) {//包名.类名: 权限定名java.util.Scanner sc = new java.util.Scanner(System.in);Scanner sc2 = new Scanner(System.in);List ls = new ArrayList();//静态变量System.out.println(PI);System.out.println(PI);System.out.println(PI);System.out.println(PI);System.out.println(PI);//静态方法System.out.println(random());System.out.println(random());System.out.println(random());System.out.println(random());System.out.println(random());}
}

private:私有的

数据不安全的情况下如:数据为负数,符合类型要求,但是不符合逻辑要求。

为了解决安全问题使用关键字private私有的:

​ 只能在当前类使用,外部类中无法使用

​ 私有的属性配合一套公共的访问方式一起使用:

​ 设置器:为私有的属性进行赋值 setter

​ 获取器|访问器:获取私有属性的值 getter

private是封装,封装不仅仅是private。

/*javabean: 泛指一系列的类模板类标准的javabean规范:1)类是公共的2)至少存在一个空构造3)属性私有化4)公共的访问方式 setter getter...*/
public class JavaBean05 {public static void main(String[] args) {Person p = new Person();//p.name = "久伴";//p.age = -18;p.setName("张三");p.setAge(19);System.out.println(p.getAge());p.code();}
}class Person{//姓名private String name;//年龄private int age;//构造器public Person(){}//设置器public void setAge(int age){if(age<=0 || age>=150){System.out.println("年龄不合法!!!");return;}this.age = age;}public void setName(String name){this.name = name;}//访问器public int getAge(){return age;}public String getName(){return this.name;}public Person(String name,int age){this.name = name;this.age = age;}//码农public void code(){System.out.println(age+"的"+name+"正在敲代码!!!!!");}}

继承

继承:子成父类

继承的目的: 为了提高代码的复用性。

​ 子类|派生类:继承父类的类。

​ 父类|基类|超类:被继承的类。

类:抽取对象的共性。

父类:抽取子类的共性定义在父类中

特点:

​ 子类一单继承父类,就有权使用父类中的成员。

​ 子类中定义子类独有的内容。

​ extends子类 是父类的延续,扩展。

​ 一个父类可以存在多个子类。

​ 单继承机制:一个子类只能存在一个父类。

​ 接口可以多实现。

单继承的优点:简单

单继承的缺点:不够灵活,不便于程序后期维护

public class ExtendsDemo01 {public static void main(String[] args) {Teacher t = new Teacher();t.name = "老大";t.age = 60;t.subject = "英语";t.teach();t.sleep();}
}//人  -->父类
class Person{public String name;public int age;public void sleep(){System.out.println("休息");}
}//教师类 ->子类
class Teacher extends Person{public String subject; //学科public Teacher(){}//教学public void teach(){System.out.println("教书育人!!!");}}//学生类 ->子类
class Student extends Person{public int grade; //成绩等级public Student(){}//学习public void study(){System.out.println("学习");}}

super关键字

super和this的区别:

this:

​ this指代对象,当前对象。

​ 构造器的首行调用本类中的其他构造器。

​ 区分局部与成员同名问题。

super:

​ super指代父类对象(子类内存中的父类对象)。

​ 在子类的构造器首行,调用父类构造器。

​ 如果没有显示调用父类的指定构造器,默认在子类构造器的首行调用父类的空构造。

​ this()和super不能同时存在。

区分子父类中同名成员的问题:

​ 默认就近原则。

​ 指代父类的成员,需要通过父类对象调用父类成员 super。

​ 如果不存在同名问题,当成员变量|方法,如果找到父类成员,默认省略super,如果找到子类成员,默认省略this。

注意:在存在父类继承的前提下,创建子类对象“先父类后子类”,先创建父类对象,再创建子类对象。

this与super都不能使用在静态环境中。

public class SuperDemo01 {public static void main(String[] args) {Zi zi = new Zi();zi.test();}}class Fu{public String name = "ash";public int age = 18;/*public Fu(){System.out.println("我是父类空构造");}*/public Fu(int a){System.out.println("我是父类带参构造"+a);}
}class Zi extends Fu{public String name = "Edd";//this调用当前类中的其他构造器public Zi(){this(1);System.out.println("我是子类空构造");}//子类构造器的首行super()调用父类中指定构造器public Zi(int i){super(10);System.out.println("带参构造器"+i);}public void test(){String name = "hahaha";System.out.println(name);  //就近原则System.out.println(this.name);  //Edd 当前类中的成员System.out.println(super.name);  //Ash  通过父类对象调用父类成员System.out.println(age);  //相当于省略了super.}
}

static关键字和块和包机制和继承super相关推荐

  1. static关键字、块、包机制、封装、继承、final关键字

    1.srtatic关键字 ​ 被static 关键字修饰的的内容为静态的内容.static不可以修饰局部变量,只能修饰成员变量. 1.1静态变量 static 成员变量-->静态变量|类变量 成 ...

  2. JavaSE——面向对象进阶(封装、this、static、代码块、包、权限修饰符、main方法详解)

    第2节 面向对象进阶 一.封装与private 概述: 封装的意义在于保护或者防止代码(数据)被我们无意中破坏.保护成员属性,不让类以外的程序直接访问和修改. 封装原则: 隐藏对象的属性和实现细节,仅 ...

  3. JAVA this关键字 static关键字 代码块

    this关键字 this的作用: – this表示的是当前对象本身, – 更准确地说this代表当前对象的一个引用. 普通方法中使用this. 区分类成员属性和方法的形参. 调用当前对象的其他方法(可 ...

  4. Java中的static关键字的用法

    1.静态方法 static:通常在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: (1)它们仅能调用其他的static方法. (2 ...

  5. Java中static关键字总结

    原文地址:http://blog.sina.com.cn/s/blog_61889f5c010105tr.html 1. 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象 ...

  6. java static是单例_JAVA基础-static关键字及单例设计模式

    static关键字 基本概念使用static关键字修饰成员变量表示静态的含义, 此时成员变量由对象层级提升为类层级, 也就是整个类只有一份并被所有对象共享. 该成员变量随着类的加载准备就绪, 与是否创 ...

  7. Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入

    static 关键字 在类中,用static声明的成员变量为静态成员变量,也称为类变量. 类变量的生命周期和类相同,在整个应用程序执行期间都有效.它有如下特点: 1. 为该类的公用变量,属于类,被该类 ...

  8. Java:封装的概念,UML类图,构造方法,this关键字,static关键字,方法重载,包package

                     oop三大特性:封装,继承,多态 oop一般指面向对象程序设计(一种计算机编程架构) 一.封装的概念:    将东西包在一起,然后以新的完整形式呈现出来       ...

  9. static 关键字静态导包

    我们知道 Java 中的 static 关键字表示静态,可以用于修饰字段.方法.代码块.类(静态内部类).但是除了这些作用外,还有一个就是静态导包. 静态导包是 jdk1.5 提供的一种新的机制,使用 ...

最新文章

  1. Only fullscreen opaque activities can request orientation
  2. 24CSS3中的动画
  3. c语言求n以内的素数的个数,关于求N以内素数的一点小问题(N小于一亿)
  4. Python 【大风号】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、微信视频号等平台的视频自动化同步发布
  5. python socket sendto sendall_网络通信 Python Socket UDP Select
  6. 设置eclipse中的编辑区的背景颜色、注释文字的颜色、修改注释内作者名和时间
  7. 【Boost】系列03:内存管理之shared_ptr智能指针
  8. CIPAddressCtrl的用法
  9. Linux内核态抢占机制分析
  10. javascript学习笔记 null和undefined
  11. php判断目录是否有写的权限,php中判断文件空目录是否有读写权限
  12. C语言程序设计题库(精心准备,内容丰富)
  13. 【CSS3】一些听课记录(样例代码)
  14. jmeter登录压力测试单用户和多用户登录
  15. PIE SDK水体指数法
  16. 2022年低压电工复训题库及模拟考试
  17. 一个简单的三极管音频放大电路
  18. 【gstreamer中appsink和appsrc操作数据转换cv::Mat】参考文献
  19. 计算机网络连接设备不见了,计算机本地连接找不到了(不见了)如何修复
  20. 虚拟机当服务器的设置,虚拟机当作设置服务器

热门文章

  1. 任何物体都在以光速运动,你能理解这一认识吗?
  2. mysql外键约束的作用_MySql外键约束作用
  3. 阿里云趣味视觉AI训练营学习笔记Day 5
  4. RXD and functions HDU-6061 NTT
  5. 线性代数 矩阵及其运算
  6. 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比(一家之言)
  7. 【图文教程】虚拟机VMware16 windows系统下载安装
  8. 从光学成像到计算光学成像
  9. 创联群控系统实时投屏一人操作N台手机
  10. python参数化建模加工图_基于Python的ABAQUS层压板参数化建模